Function at 0x69021bb0
Capabilities:
Get process heap flags
Resolve function by parsing pe exports

Disassembly:
push edi
lea edi, [esp + 8]
and esp, 0xfffffff0
push dword [edi - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x13c
mov dword [ebp - 0xb8], ecx
mov eax, dword [edi]
mov dword [ebp - 0x94], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0xe4], eax
mov eax, dword [edx]
mov dword [ebp - 0x78], eax
cmp eax, 4
ja sym._brush_fill_pixels.cold
mov esi, edx
jmp dword [eax*4 + 0x6907e6d0]
pxor xmm0, xmm0
ucomiss xmm0, dword [edx + 0x1c]
jp 0x6902224d
jne 0x6902224d
ucomiss xmm0, dword [edx + 0x20]
jp 0x6902224d
jne 0x6902224d
mov edx, dword [esi + 0x10]
test edx, edx
je 0x69021c64
mov eax, dword [0x69088034]
lea edx, [eax + 1]
test eax, eax
mov dword [0x69088034], edx
jne 0x69021c64
test byte [0x6907a0c8], 1
je 0x69021c64
mov dword [esp], 0
mov eax, str.path_gradient_gamma_correction_not_implemented_n
mov dword [esp + 0xc], eax
mov eax, str.brush_fill_pixels
mov dword [esp + 8], eax
mov eax, 0x6907a0c8
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0_4
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x69021cad
mov eax, dword [0x69088030]
lea edx, [eax + 1]
test eax, eax
mov dword [0x69088030], edx
jne 0x69021cad
test byte [0x6907a0c8], 1
je 0x69021cad
mov ecx, str.path_gradient_blend_not_implemented_n
mov edi, str.brush_fill_pixels
mov dword [esp + 0xc], ecx
mov eax, 0x6907a0c8
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_4
mov edx, dword [esi + 0x40]
test edx, edx
je 0x69021cca
mov eax, dword [0x6908802c]
lea edx, [eax + 1]
test eax, eax
mov dword [0x6908802c], edx
je 0x69022557
mov eax, dword [0x69088028]
test eax, eax
je 0x690222ac
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
mov eax, dword [esi + 4]
mov dword [esp], eax
call sym.gdiplus.dll_GdipClonePath
mov dword [ebp - 0xe0], eax
sub esp, 8
test eax, eax
jne 0x69021dc6
mov dword [esp], ebx
lea edi, [ebp - 0x30]
xor eax, eax
mov dword [esp + 8], eax
mov eax, 4
mov dword [esp + 0xc], edi
mov dword [esp + 4], eax
call sym._get_graphics_transform
mov dword [ebp - 0xe0], eax
test eax, eax
je 0x69022612
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym.gdiplus.dll_GdipDeletePath
sub esp, 4
jmp 0x69021dc6
mov eax, dword [ebp - 0x94]
pxor xmm1, xmm1
pxor xmm0, xmm0
pxor xmm2, xmm2
mov edi, 3
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], edi
mov dword [esp], ebx
cvtsi2ss xmm1, edx
inc edx
cvtsi2ss xmm0, edx
lea edx, [ebp - 0x48]
mov dword [esp + 0xc], edx
cvtsi2ss xmm2, eax
inc eax
mov dword [ebp - 0x60], edx
movss dword [ebp - 0x40], xmm0
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
mov eax, 4
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
movss dword [ebp - 0x48], xmm1
movss dword [ebp - 0x44], xmm2
movss dword [ebp - 0x3c], xmm2
movss dword [ebp - 0x38], xmm1
movss dword [ebp - 0x34], xmm0
call sym._gdip_transform_points
mov edx, dword [ebp - 0x60]
mov dword [ebp - 0xe0], eax
test eax, eax
je 0x69022000
mov eax, dword [ebp - 0xe0]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov eax, dword [ebp - 0x94]
mov eax, dword [eax + 8]
mov dword [ebp - 0x64], eax
test eax, eax
jle 0x69021e35
mov eax, dword [ebp - 0x94]
xor edi, edi
mov ebx, dword [ebp - 0xe4]
mov ecx, dword [eax + 0xc]
shl ebx, 2
lea esi, [esi]
test ecx, ecx
jle 0x69021e2f
mov dword [ebp - 0x60], edi
mov eax, dword [ebp - 0xb8]
lea edx, [eax + edi*4]
xor eax, eax
lea esi, [esi]
lea esi, [esi]
mov edi, dword [esi + 4]
inc eax
mov dword [edx], edi
add edx, ebx
cmp eax, ecx
jne 0x69021e20
mov edi, dword [ebp - 0x60]
inc edi
cmp edi, dword [ebp - 0x64]
jne 0x69021e00
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0xe0], eax
jmp 0x69021dc6
lea eax, [ebp - 0x48]
mov dword [esp + 4], eax
mov eax, dword [edx + 4]
mov dword [esp], eax
call sym._get_hatch_data
mov dword [ebp - 0xe0], eax
test eax, eax
jne 0x6902229c
mov edi, dword [esi + 8]
mov eax, dword [esi + 0xc]
movss xmm0, dword [0x6907fbb0]
mov dword [ebp - 0x70], edi
mov edx, edi
mov dword [ebp - 0x68], eax
mov esi, eax
mov dword [ebp - 0x30], eax
call sym._blend_colors
mov edx, edi
movss xmm0, dword [0x6907fbb4]
mov dword [ebp - 0x2c], eax
mov eax, esi
call sym._blend_colors
mov edi, dword [ebp - 0x94]
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x74], eax
test ecx, ecx
jle 0x69021dc6
mov eax, dword [ebx + 0x74]
mov esi, dword [edi + 4]
mov edx, dword [ebx + 0x78]
mov edi, dword [edi + 8]
and eax, 7
mov ebx, dword [ebp - 0x48]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x88], edi
shl eax, 2
mov dword [ebp - 0x80], eax
mov eax, esi
sub eax, edx
not eax
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0xb8]
lea eax, [eax + edi*4]
mov dword [ebp - 0x60], eax
lea eax, [edx - 1]
sub eax, esi
mov esi, ebx
sub eax, ecx
mov dword [ebp - 0x8c], eax
lea esi, [esi]
mov eax, dword [ebp - 0x78]
movzx ecx, byte [ebp - 0x84]
and eax, 7
movzx eax, byte [esi + eax]
imul eax, eax, 0x10101
sar eax, cl
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x88]
test eax, eax
jle 0x69021f89
mov eax, dword [ebp - 0x94]
mov eax, dword [eax]
mov dword [ebp - 0x7c], eax
mov edx, eax
mov eax, dword [ebp - 0xb8]
not edx
jmp 0x69021f5f
test edi, edi
mov ebx, dword [ebp - 0x74]
jne 0x69021f54
test cl, 0x82
setne cl
movzx ecx, cl
mov ebx, dword [ebp + ecx*4 - 0x30]
mov dword [eax], ebx
add eax, 4
dec edx
cmp dword [ebp - 0x60], eax
je 0x69021f89
mov edi, dword [ebp - 0x64]
mov ecx, edx
and ecx, 7
shr edi, cl
mov ecx, edi
and edi, 1
cmp byte [esi + 8], 0
jne 0x69021f40
test edi, edi
mov ebx, dword [ebp - 0x70]
cmove ebx, dword [ebp - 0x68]
add eax, 4
dec edx
mov dword [eax - 4], ebx
cmp dword [ebp - 0x60], eax
jne 0x69021f5f
dec dword [ebp - 0x78]
mov ebx, dword [ebp - 0x80]
add dword [ebp - 0xb8], ebx
mov eax, dword [ebp - 0x78]
add dword [ebp - 0x60], ebx
cmp eax, dword [ebp - 0x8c]
jne 0x69021f00
jmp 0x69021dc6
mov eax, dword [edx + 0x1c]
cmp dword [eax + 8], 1
mov dword [ebp - 0x60], eax
je 0x690222ef
test byte [0x6907a0c8], 1
mov ecx, 6
mov dword [ebp - 0xe0], ecx
je 0x69021dc6
mov dword [esp], 0
mov eax, str.metafile_texture_brushes_not_implemented_n
mov edx, 0x6907a0c8
mov dword [esp + 0xc], eax
mov eax, str.brush_fill_pixels
mov dword [esp + 8], eax
mov dword [esp + 4], edx
call sym._wine_dbg_log.constprop.0_4
jmp 0x69021dc6
mov ecx, dword [esi + eax + 0x3c]
mov dword [ebp + eax - 0x30], ecx
add eax, 4
cmp eax, 0x18
jb 0x69022000
mov dword [ebp - 0x60], edx
lea ebx, [ebp - 0x30]
mov dword [esp], ebx
call sym.gdiplus.dll_GdipInvertMatrix
mov edx, dword [ebp - 0x60]
mov dword [ebp - 0xe0], eax
sub esp, 4
test eax, eax
jne 0x69021dc6
mov dword [esp + 4], edx
mov ecx, 3
mov dword [esp + 8], ecx
mov dword [esp], ebx
call sym.gdiplus.dll_GdipTransformMatrixPoints
mov dword [ebp - 0xe0], eax
sub esp, 0xc
test eax, eax
jne 0x69021dc6
movss xmm0, dword [ebp - 0x48]
movss xmm1, dword [ebp - 0x40]
mov eax, dword [ebp - 0x94]
subss xmm1, xmm0
mov eax, dword [eax + 0xc]
movss dword [ebp - 0x68], xmm1
movss xmm1, dword [ebp - 0x38]
test eax, eax
subss xmm1, xmm0
movss dword [ebp - 0x80], xmm1
jle 0x69021dc6
mov dword [ebp - 0x74], 0
mov eax, dword [ebp - 0xe4]
shl eax, 2
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0x60], eax
lea esi, [esi]
lea esi, [esi]
mov eax, dword [ebp - 0x94]
mov ebx, dword [eax + 8]
test ebx, ebx
jle 0x6902222d
pxor xmm0, xmm0
cvtsi2ss xmm0, dword [ebp - 0x74]
xor ebx, ebx
mulss xmm0, dword [ebp - 0x80]
movss dword [ebp - 0x64], xmm0
lea esi, [esi]
lea esi, [esi]
pxor xmm0, xmm0
cvtsi2ss xmm0, ebx
mov eax, dword [esi + 0x1c]
mulss xmm0, dword [ebp - 0x68]
addss xmm0, dword [ebp - 0x48]
test eax, eax
mov eax, 0
addss xmm0, dword [ebp - 0x64]
subss xmm0, dword [esi + 0xc]
divss xmm0, dword [esi + 0x14]
mov dword [esp + 8], eax
cvtss2sd xmm0, xmm0
jne 0x690225a0
mov eax, 0x3ff00000
movsd qword [esp], xmm0
mov dword [esp + 0xc], eax
call dword [sym.imp.ucrtbase.dll_fmod]
pxor xmm0, xmm0
pxor xmm5, xmm5
fstp qword [ebp - 0x70]
cvtsd2ss xmm0, qword [ebp - 0x70]
comiss xmm5, xmm0
jbe 0x6902214a
addss xmm0, dword [0x6907fba0]
cmp dword [esi + 0x2c], 1
je 0x690221b1
mov edx, dword [esi + 0x28]
mov eax, 1
movss xmm1, dword [edx + 4]
comiss xmm0, xmm1
jbe 0x690225f8
lea esi, [esi]
lea esi, [esi]
mov ecx, eax
inc eax
movss xmm1, dword [edx + eax*4]
lea edi, [eax*4]
comiss xmm0, xmm1
ja 0x69022170
shl ecx, 2
add edx, ecx
movss xmm3, dword [edx]
movups xmm2, xmm1
mov eax, dword [esi + 0x24]
subss xmm2, xmm0
subss xmm0, xmm3
subss xmm1, xmm3
mulss xmm2, dword [eax + ecx]
mulss xmm0, dword [eax + edi]
addss xmm0, xmm2
divss xmm0, xmm1
mov edi, dword [esi + 0x38]
test edi, edi
je 0x69022590
mov edx, dword [esi + 0x34]
mov eax, 1
movss xmm1, dword [edx + 4]
comiss xmm0, xmm1
jbe 0x69022608
lea esi, [esi]
lea esi, [esi]
mov ecx, eax
inc eax
movss xmm1, dword [edx + eax*4]
lea edi, [eax*4]
comiss xmm0, xmm1
ja 0x690221e0
shl ecx, 2
add edx, ecx
movss xmm2, dword [edx]
mov eax, dword [esi + 0x30]
subss xmm0, xmm2
subss xmm1, xmm2
mov edx, dword [eax + edi]
mov eax, dword [eax + ecx]
divss xmm0, xmm1
call sym._blend_colors
mov edi, dword [ebp - 0x60]
mov dword [edi + ebx*4], eax
mov eax, dword [ebp - 0x94]
inc ebx
cmp dword [eax + 8], ebx
jg 0x690220e0
inc dword [ebp - 0x74]
mov edi, dword [ebp - 0x94]
mov ebx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x74]
add dword [ebp - 0x60], ebx
cmp dword [edi + 0xc], eax
jg 0x690220b0
jmp 0x69021dc6
mov eax, dword [0x69088038]
lea edx, [eax + 1]
test eax, eax
mov dword [0x69088038], edx
jne 0x69021c1b
test byte [0x6907a0c8], 1
je 0x69021c1b
mov ecx, str.path_gradient_focus_not_implemented_n
mov edi, str.brush_fill_pixels
mov dword [esp + 0xc], ecx
mov eax, 0x6907a0c8
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_4
jmp 0x69021c1b
mov eax, 6
mov dword [ebp - 0xe0], eax
jmp 0x69021dc6
mov dword [ebp - 0x30], 1
lea eax, [ebp - 0x30]
mov dword [esp + 4], eax
lea eax, [esi + 0x44]
mov dword [esp], eax
call sym.gdiplus.dll_GdipIsMatrixIdentity
mov eax, dword [ebp - 0x30]
sub esp, 8
test eax, eax
jne 0x69021cd7
test byte [0x6907a0c8], 1
jne 0x69022e2f
mov eax, 1
mov dword [0x69088028], eax
jmp 0x69021cd7
mov eax, dword [ebp - 0x60]
pxor xmm1, xmm1
pxor xmm0, xmm0
pxor xmm2, xmm2
mov edi, dword [eax + 0x38]
mov dword [ebp - 0x54], 0
mov eax, dword [eax + 0x3c]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x94]
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp], ebx
cvtsi2ss xmm1, edx
inc edx
cvtsi2ss xmm0, edx
lea edx, [ebp - 0x48]
mov dword [esp + 0xc], edx
cvtsi2ss xmm2, eax
inc eax
mov dword [ebp - 0x64], edx
movss dword [ebp - 0x40], xmm0
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
mov eax, 3
mov dword [esp + 0x10], eax
mov eax, 4
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
movss dword [ebp - 0x48], xmm1
movss dword [ebp - 0x44], xmm2
movss dword [ebp - 0x3c], xmm2
movss dword [ebp - 0x38], xmm1
movss dword [ebp - 0x34], xmm0
call sym._gdip_transform_points
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0xe0], eax
test eax, eax
jne 0x69021dc6
mov ecx, dword [esi + eax + 4]
mov dword [ebp + eax - 0x30], ecx
add eax, 4
cmp eax, 0x18
jb 0x69022392
mov dword [ebp - 0x64], edx
lea eax, [ebp - 0x30]
mov dword [esp], eax
call sym.gdiplus.dll_GdipInvertMatrix
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0xe0], eax
sub esp, 4
test eax, eax
jne 0x69021dc6
mov dword [esp + 4], edx
lea eax, [ebp - 0x30]
mov ecx, 3
mov dword [esp + 8], ecx
mov dword [esp], eax
call sym.gdiplus.dll_GdipTransformMatrixPoints
mov dword [ebp - 0xe0], eax
sub esp, 0xc
test eax, eax
jne 0x69021dc6
mov edx, dword [esi + 0x24]
test edx, edx
je 0x69022e5b
movss xmm1, dword [ebp - 0x48]
movss xmm0, dword [ebp - 0x40]
movss xmm2, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x94]
subss xmm0, xmm1
movss dword [ebp - 0x74], xmm0
mov eax, dword [eax + 0xc]
movss xmm0, dword [ebp - 0x44]
subss xmm2, xmm0
test eax, eax
movss dword [ebp - 0x78], xmm2
movss xmm2, dword [ebp - 0x38]
subss xmm2, xmm1
movss xmm1, dword [ebp - 0x34]
movss dword [ebp - 0x84], xmm2
subss xmm1, xmm0
movss dword [ebp - 0x88], xmm1
jle 0x69021dc6
mov dword [ebp - 0x7c], 0
mov eax, dword [ebp - 0xe4]
shl eax, 2
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x94]
mov eax, dword [eax + 8]
test eax, eax
jle 0x69022537
pxor xmm0, xmm0
cvtsi2ss xmm0, dword [ebp - 0x7c]
xor edi, edi
movss xmm7, dword [ebp - 0x84]
mulss xmm7, xmm0
mulss xmm0, dword [ebp - 0x88]
movss dword [ebp - 0x68], xmm7
movss dword [ebp - 0x70], xmm0
lea esi, [esi]
nop
mov eax, dword [ebp - 0x60]
pxor xmm0, xmm0
mov edx, dword [esi + 0x24]
cvtsi2ss xmm0, edi
mov ecx, dword [eax + 0x38]
mov eax, dword [ebx + 0x28]
movss xmm1, dword [ebp - 0x74]
mov dword [esp + 0x14], eax
mulss xmm1, xmm0
mov eax, dword [ebx + 0x24]
mulss xmm0, dword [ebp - 0x78]
addss xmm1, dword [ebp - 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x20]
addss xmm0, dword [ebp - 0x44]
addss xmm1, dword [ebp - 0x68]
addss xmm0, dword [ebp - 0x70]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x2c]
mov dword [esp + 8], eax
lea eax, [ebp - 0x30]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x60]
movss dword [ebp - 0x30], xmm1
movss dword [ebp - 0x2c], xmm0
mov eax, dword [eax + 0x3c]
mov dword [esp], eax
lea eax, [ebp - 0x58]
call sym._resample_bitmap_pixel.isra.0
mov edx, dword [ebp - 0x64]
mov dword [edx + edi*4], eax
mov eax, dword [ebp - 0x94]
inc edi
cmp dword [eax + 8], edi
jg 0x690224b0
inc dword [ebp - 0x7c]
mov edi, dword [ebp - 0x94]
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x7c]
add dword [ebp - 0x64], edx
cmp dword [edi + 0xc], eax
jg 0x6902246d
jmp 0x69021dc6
test byte [0x6907a0c8], 1
je 0x69021cca
mov dword [esp], 0
mov eax, str.path_gradient_preset_blend_not_implemented_n
mov dword [esp + 0xc], eax
mov eax, str.brush_fill_pixels
mov dword [esp + 8], eax
mov eax, 0x6907a0c8
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0_4
jmp 0x69021cca
mov edx, dword [esi + 8]
mov eax, dword [esi + 4]
call sym._blend_colors
jmp 0x69022217
mov eax, 0x40000000
movsd qword [esp], xmm0
mov dword [esp + 0xc], eax
call dword [sym.imp.ucrtbase.dll_fmod]
pxor xmm0, xmm0
pxor xmm7, xmm7
fstp qword [ebp - 0x70]
cvtsd2ss xmm0, qword [ebp - 0x70]
comiss xmm7, xmm0
jbe 0x690225d1
addss xmm0, dword [0x6907fc34]
comiss xmm0, dword [0x6907fba0]
jbe 0x6902214a
movss xmm1, dword [0x6907fc34]
subss xmm1, xmm0
movups xmm0, xmm1
jmp 0x6902214a
mov edi, dword [ebp - 0x78]
xor ecx, ecx
jmp 0x69022189
mov edi, dword [ebp - 0x78]
xor ecx, ecx
jmp 0x690221f9
mov dword [esp + 4], edi
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym.gdiplus.dll_GdipTransformPath
mov dword [ebp - 0xe0], eax
sub esp, 8
test eax, eax
jne 0x69021d26
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
mov dword [esp], edi
mov dword [ebp - 0x48], eax
mov eax, 1
mov dword [esp + 8], eax
lea eax, [ebp - 0x48]
mov dword [esp + 4], eax
mov dword [ebp - 0x44], edx
call sym.gdiplus.dll_GdipTransformMatrixPoints
mov dword [ebp - 0xe0], eax
sub esp, 0xc
test eax, eax
jne 0x69021d26
mov dword [esp + 8], 0x3f000000
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym.gdiplus.dll_GdipFlattenPath
mov dword [ebp - 0xe0], eax
sub esp, 0xc
test eax, eax
jne 0x69021d26
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x11c], eax
mov eax, dword [eax + 4]
mov dword [ebp - 0x100], eax
test eax, eax
jle 0x69022d76
movss xmm5, dword [0x6907fc40]
mov eax, dword [ebp - 0x11c]
xor ebx, ebx
movss xmm7, dword [ebp - 0x44]
movq xmm0, qword [0x6907fb60]
movupd xmmword [ebp - 0x118], xmm0
mov dword [ebp - 0xe8], ebx
movss dword [ebp - 0x88], xmm7
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 8]
movss xmm7, dword [ebp - 0x48]
mov dword [ebp - 0xf4], edi
xor edi, edi
mov dword [ebp - 0xec], eax
mov eax, dword [esi + 0x30]
mov dword [ebp - 0xc8], edi
movss dword [ebp - 0x8c], xmm7
movsd xmm7, qword [0x6907fc50]
mov dword [ebp - 0x104], eax
mov eax, dword [esi + 0x34]
dec eax
mov dword [ebp - 0xf8], eax
shl eax, 2
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp - 0xe4]
shl eax, 2
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0x94]
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 4]
mov dword [ebp - 0x108], edi
mov edi, esi
mov dword [ebp - 0xf0], eax
lea esi, [esi]
lea esi, [esi]
mov esi, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xf4]
mov ebx, dword [ebp - 0xe8]
movzx eax, byte [eax + esi]
mov dl, al
and dl, 7
mov edx, dword [ebp - 0xfc]
cmove ebx, esi
cmp dword [ebp - 0xf8], esi
mov dword [ebp - 0xe8], ebx
jle 0x69022799
lea edx, [esi*4]
inc dword [ebp - 0xc8]
test al, al
mov esi, dword [ebp - 0xc8]
js 0x69022df0
cmp dword [ebp - 0x100], esi
jle 0x69022df0
mov eax, dword [ebp - 0xf4]
mov esi, dword [ebp - 0xc8]
movzx eax, byte [eax + esi]
mov byte [ebp - 0x60], al
and al, 7
dec al
jne 0x69022760
mov eax, dword [ebp - 0xc8]
mov esi, dword [ebp - 0xec]
movss xmm6, dword [esi + eax*8]
mov ebx, esi
mov esi, eax
cmp dword [ebp - 0xf8], esi
movss dword [ebp - 0xac], xmm6
movss xmm6, dword [ebx + eax*8 + 4]
mov eax, dword [ebp - 0xfc]
movss dword [ebp - 0xa4], xmm6
jle 0x69022812
lea eax, [esi*4]
mov esi, dword [ebp - 0x104]
pxor xmm1, xmm1
mov eax, dword [esi + eax]
mov esi, dword [ebp - 0xc8]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0xec]
movss xmm6, dword [eax + esi*8 - 4]
mov eax, dword [ebp - 0xf0]
movups xmm0, xmm6
movss dword [ebp - 0xa8], xmm6
minss xmm0, dword [ebp - 0x88]
movss xmm6, dword [ebp - 0xa4]
cvtsi2ss xmm1, eax
mov dword [ebp - 0xa0], eax
minss xmm6, xmm0
comiss xmm1, xmm6
ja 0x690228c1
pxor xmm0, xmm0
movsd xmm2, qword [0x6907fb60]
cvtss2sd xmm0, xmm6
movsd xmm6, qword [0x6907fb58]
movupd xmm1, xmm0
andpd xmm1, xmm2
ucomisd xmm6, xmm1
jbe 0x690228b7
andnpd xmm2, xmm0
addsd xmm1, xmm6
subsd xmm1, xmm6
movsd xmm6, qword [0x6907fb48]
orpd xmm1, xmm2
cmpnlesd xmm0, xmm1
andpd xmm0, xmm6
addsd xmm0, xmm1
orpd xmm0, xmm2
cvttsd2si eax, xmm0
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0xf0]
pxor xmm1, xmm1
mov ecx, dword [ebp - 0x108]
movss xmm0, dword [ebp - 0xa8]
movss xmm6, dword [ebp - 0xa4]
maxss xmm0, dword [ebp - 0x88]
add eax, ecx
cvtsi2ss xmm1, eax
mov dword [ebp - 0xcc], eax
maxss xmm6, xmm0
comiss xmm6, xmm1
ja 0x69022957
pxor xmm0, xmm0
movsd xmm2, qword [ebp - 0x118]
cvtss2sd xmm0, xmm6
movsd xmm6, qword [0x6907fb58]
movupd xmm1, xmm0
andpd xmm1, xmm2
ucomisd xmm6, xmm1
jbe 0x6902294d
andnpd xmm2, xmm0
addsd xmm1, xmm6
subsd xmm1, xmm6
movsd xmm6, qword [0x6907fb48]
orpd xmm1, xmm2
cmpnlesd xmm0, xmm1
andpd xmm0, xmm6
addsd xmm0, xmm1
orpd xmm0, xmm2
cvttsd2si eax, xmm0
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0xec]
mov esi, dword [ebp - 0xc8]
movss xmm1, dword [ebp - 0xa8]
movss xmm2, dword [ebp - 0xa4]
movss xmm4, dword [ebp - 0xac]
movss xmm6, dword [eax + esi*8 - 8]
movss xmm3, dword [ebp - 0x88]
subss xmm2, xmm1
mov ecx, dword [ebp - 0xa0]
movss dword [ebp - 0x74], xmm6
subss xmm4, xmm6
mov eax, dword [ebp - 0xcc]
subss xmm6, dword [ebp - 0x8c]
movss dword [ebp - 0x64], xmm2
subss xmm3, xmm1
movss dword [ebp - 0x90], xmm4
movss dword [ebp - 0x98], xmm6
mulss xmm6, xmm2
cmp ecx, eax
movss dword [ebp - 0x9c], xmm3
mulss xmm3, xmm4
movups xmm1, xmm6
addss xmm1, xmm3
movss dword [ebp - 0x84], xmm1
jge 0x69022d64
mov eax, dword [ebp - 0x104]
mov esi, dword [eax + edx]
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0xf0]
mov dword [ebp - 0xdc], esi
mov ebx, dword [eax]
mov eax, dword [eax + 8]
mov dword [ebp - 0xd0], ebx
add eax, ebx
mov dword [ebp - 0xd4], eax
mov eax, ecx
mov ecx, dword [ebp - 0xe4]
sub eax, edx
imul eax, ecx
sub eax, ebx
mov ebx, dword [ebp - 0xb8]
lea eax, [ebx + eax*4]
xor ebx, ebx
mov dword [ebp - 0x78], eax
xor eax, eax
mov dword [ebp - 0xc0], eax
xor eax, eax
mov dword [ebp - 0xbc], eax
xor eax, eax
mov dword [ebp - 0xb4], eax
xor eax, eax
mov dword [ebp - 0xc4], ebx
mov dword [ebp - 0xb0], eax
lea esi, [esi]
nop
mov eax, dword [ebp - 0xbc]
pxor xmm6, xmm6
cvtsi2ss xmm6, dword [ebp - 0xa0]
test eax, eax
movss dword [ebp - 0x70], xmm6
jne 0x69022a96
comiss xmm6, dword [ebp - 0xa8]
jb 0x69022a96
xor dword [ebp - 0xb0], 1
mov eax, 1
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xc0]
test eax, eax
jne 0x69022ac0
movss xmm6, dword [ebp - 0x70]
comiss xmm6, dword [ebp - 0xa4]
jb 0x69022ac0
xor dword [ebp - 0xb4], 1
mov eax, 1
mov dword [ebp - 0xc0], eax
mov ebx, dword [ebp - 0xc4]
test ebx, ebx
jne 0x69022af1
movss xmm6, dword [ebp - 0x70]
comiss xmm6, dword [ebp - 0x88]
jb 0x69022af1
xor dword [ebp - 0xb0], 1
mov ecx, 1
xor dword [ebp - 0xb4], 1
mov dword [ebp - 0xc4], ecx
mov edx, dword [ebp - 0xb0]
test edx, edx
je 0x69022dc0
movss xmm6, dword [ebp - 0x88]
subss xmm6, dword [ebp - 0x70]
mulss xmm6, dword [ebp - 0x98]
divss xmm6, dword [ebp - 0x9c]
addss xmm6, dword [ebp - 0x8c]
mov eax, dword [ebp - 0xb4]
test eax, eax
je 0x69022d90
movss xmm3, dword [ebp - 0x88]
movss xmm4, dword [ebp - 0x8c]
movss xmm0, dword [ebp - 0xac]
movups xmm1, xmm3
subss xmm1, dword [ebp - 0x70]
subss xmm0, xmm4
subss xmm3, dword [ebp - 0xa4]
mulss xmm0, xmm1
divss xmm0, xmm3
addss xmm0, xmm4
pxor xmm3, xmm3
movsd xmm1, qword [0x6907fba8]
cvtss2sd xmm3, xmm0
movsd xmm4, qword [0x6907fb58]
andpd xmm1, xmm3
ucomisd xmm4, xmm1
jbe 0x69022bbd
addsd xmm1, xmm4
movsd xmm2, qword [0x6907fba8]
subsd xmm1, xmm4
andnpd xmm2, xmm3
movsd xmm4, qword [0x6907fb48]
orpd xmm1, xmm2
cmpnlesd xmm3, xmm1
andpd xmm3, xmm4
addsd xmm3, xmm1
orpd xmm3, xmm2
pxor xmm2, xmm2
movsd xmm1, qword [0x6907fba8]
cvtss2sd xmm2, xmm6
movsd xmm4, qword [0x6907fb58]
andpd xmm1, xmm2
ucomisd xmm4, xmm1
jbe 0x69022c1a
addsd xmm1, xmm4
subsd xmm1, xmm4
movsd xmm4, qword [0x6907fba8]
andnpd xmm4, xmm2
orpd xmm1, xmm4
movsd qword [ebp - 0x60], xmm4
cmpnlesd xmm2, xmm1
movsd xmm4, qword [0x6907fb48]
andpd xmm2, xmm4
movsd xmm4, qword [ebp - 0x60]
addsd xmm2, xmm1
orpd xmm2, xmm4
comiss xmm0, xmm6
cvttsd2si ebx, xmm3
cvttsd2si edx, xmm2
jbe 0x69022c2d
mov eax, ebx
mov ebx, edx
mov edx, eax
mov eax, dword [ebp - 0xd0]
cmp eax, ebx
cmovge ebx, eax
mov eax, dword [ebp - 0xd4]
cmp eax, edx
cmovle edx, eax
mov dword [ebp - 0x7c], edx
cmp edx, ebx
jle 0x69022d43
movss xmm6, dword [ebp - 0x70]
mov ecx, esi
mov esi, edi
mov edi, dword [ebp - 0xdc]
subss xmm6, dword [ebp - 0xa8]
mulss xmm6, dword [ebp - 0x90]
movss dword [ebp - 0x80], xmm6
lea esi, [esi]
lea esi, [esi]
cmp dword [ebp - 0x68], edi
pxor xmm6, xmm6
cvtsi2ss xmm6, ebx
je 0x69022d04
movups xmm1, xmm6
subss xmm1, dword [ebp - 0x8c]
movss xmm3, dword [ebp - 0x70]
movups xmm0, xmm1
andps xmm0, xmm5
subss xmm3, dword [ebp - 0x88]
cvtss2sd xmm0, xmm0
comisd xmm7, xmm0
jb 0x69022cc7
movups xmm0, xmm3
mov ecx, edi
andps xmm0, xmm5
cvtss2sd xmm0, xmm0
comisd xmm7, xmm0
jae 0x69022d04
movss xmm4, dword [ebp - 0x9c]
mov eax, edi
movss xmm0, dword [ebp - 0x98]
mov edx, dword [ebp - 0x68]
mulss xmm4, xmm1
mulss xmm0, xmm3
mulss xmm1, dword [ebp - 0x64]
mulss xmm3, dword [ebp - 0x90]
addss xmm0, xmm4
subss xmm1, xmm3
divss xmm0, xmm1
call sym._blend_colors
mov ecx, eax
movss xmm0, dword [ebp - 0x74]
mov eax, ecx
mov dword [ebp - 0x60], ecx
mov edx, dword [esi + 8]
subss xmm0, xmm6
mulss xmm0, dword [ebp - 0x64]
addss xmm0, dword [ebp - 0x80]
divss xmm0, dword [ebp - 0x84]
call sym._blend_colors
mov ecx, dword [ebp - 0x78]
mov dword [ecx + ebx*4], eax
inc ebx
mov ecx, dword [ebp - 0x60]
cmp dword [ebp - 0x7c], ebx
jne 0x69022c80
mov edi, esi
mov esi, ecx
inc dword [ebp - 0xa0]
mov edx, dword [ebp - 0xd8]
add dword [ebp - 0x78], edx
mov eax, dword [ebp - 0xa0]
cmp dword [ebp - 0xcc], eax
jne 0x69022a60
mov esi, dword [ebp - 0xc8]
cmp dword [ebp - 0x100], esi
jne 0x69022760
mov eax, dword [ebp - 0x11c]
mov dword [esp], eax
call sym.gdiplus.dll_GdipDeletePath
sub esp, 4
jmp 0x69021dc6
movss xmm3, dword [ebp - 0xac]
movss xmm0, dword [ebp - 0x74]
movss xmm1, dword [ebp - 0xa4]
subss xmm0, xmm3
subss xmm1, dword [ebp - 0x70]
mulss xmm0, xmm1
divss xmm0, dword [ebp - 0x64]
addss xmm0, xmm3
jmp 0x69022b6a
movss xmm3, dword [ebp - 0xac]
movss xmm6, dword [ebp - 0x74]
movss xmm0, dword [ebp - 0xa4]
subss xmm6, xmm3
subss xmm0, dword [ebp - 0x70]
mulss xmm6, xmm0
divss xmm6, dword [ebp - 0x64]
addss xmm6, xmm3
jmp 0x69022b24
mov esi, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xec]
cmp dword [ebp - 0xf8], esi
lea eax, [eax + esi*8]
movss xmm6, dword [eax]
movss dword [ebp - 0xac], xmm6
movss xmm6, dword [eax + 4]
mov eax, dword [ebp - 0xfc]
movss dword [ebp - 0xa4], xmm6
jle 0x69022812
jmp 0x6902280b
mov edx, str.path_gradient_transform_not_implemented_n
mov ecx, str.brush_fill_pixels
mov dword [esp + 0xc], edx
mov edi, 0x6907a0c8
mov dword [esp + 8], ecx
mov dword [esp + 4], edi
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_4
jmp 0x690222e0
mov ecx, dword [ebp - 0x60]
mov edx, dword fs:[0x18]
mov eax, dword [ecx + 0x38]
imul eax, dword [ecx + 0x3c]
shl eax, 2
mov dword [esp + 8], eax
mov eax, 8
mov dword [esp + 4], eax
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [esi + 0x24], eax
sub esp, 0xc
test eax, eax
mov ecx, eax
je 0x69022f87
mov eax, dword [ebp - 0x60]
shl edi, 2
mov edx, dword [eax + 0x3c]
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x2c], edx
lea edx, [ebp - 0x30]
mov dword [ebp - 0x30], eax
mov eax, 0x26200a
mov dword [esp + 0x10], edx
mov edx, 5
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x58]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ecx
mov dword [ebp - 0x24], 0x26200a
call sym.gdiplus.dll_GdipBitmapLockBits
sub esp, 0x14
test eax, eax
mov edx, eax
je 0x69022f30
mov dword [ebp - 0x60], edx
mov ecx, dword [esi + 0x24]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, dword [ebp - 0x60]
mov dword [esi + 0x24], 0
mov dword [ebp - 0xe0], edx
sub esp, 0xc
jmp 0x69021dc6
lea eax, [ebp - 0x30]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
call sym.gdiplus.dll_GdipBitmapUnlockBits
sub esp, 8
test eax, eax
mov edx, eax
jne 0x69022eee
mov dword [esp + 0x10], edi
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 0x60]
mov dword [esp + 0x18], eax
mov eax, 1
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0x3c]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x24]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x20]
mov dword [esp], eax
call sym._apply_image_attributes
jmp 0x690223f8
mov edx, 3
jmp 0x69022eee