Function at 0x64a574b0
Capabilities:
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xac
mov dword [ebp - 0x64], eax
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x78], ecx
test eax, eax
je 0x64a574e3
cmp dword [eax + 8], 1
je 0x64a57705
mov eax, dword [ebp - 0x64]
cmp dword [eax + 0x18], 2
je 0x64a576cc
mov eax, dword [ebp - 0x64]
lea edx, [ebp - 0x48]
call sym._get_clip_hrgn
mov ebx, eax
test eax, eax
je 0x64a574fe
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [ebp - 0x64]
mov eax, dword [esi]
mov dword [esp], eax
call sym._SaveDC_4
sub esp, 4
mov dword [ebp - 0x4c], eax
mov dword [esp + 8], 5
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call sym._ExtSelectClipRgn_12
mov edx, dword [ebp + 0x18]
sub esp, 0xc
test edx, edx
je 0x64a57550
mov dword [esp + 8], 1
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call sym._ExtSelectClipRgn_12
sub esp, 0xc
mov dword [esp], 0
call sym._CreateCompatibleDC_4
mov dword [ebp - 0x40], 0x28
mov edi, eax
mov eax, dword [ebp + 0xc]
sub esp, 4
mov dword [ebp - 0x34], 0x200001
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x2c], 0
neg eax
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x44]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x40]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], edi
call sym._CreateDIBSection_24
sub esp, 0x18
mov esi, eax
test eax, eax
je 0x64a57692
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x64a57692
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [esp], eax
call sym._GetDeviceCaps_8
sub esp, 8
cmp eax, 2
je 0x64a57d62
mov edx, dword [ebp - 0x44]
test dword [ebp + 0x1c], 0x80000
je 0x64a57d1a
mov eax, dword [ebp + 0x10]
imul eax, dword [ebp + 0xc]
shl eax, 2
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov dword [esp + 4], eax
call sym._memcpy
mov dword [esp + 4], esi
mov dword [esp], edi
call sym._SelectObject_8
mov eax, dword [ebp + 0x10]
sub esp, 8
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], edi
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x64]
call sym._gdi_alpha_blend
mov dword [esp], esi
call sym._DeleteObject_4
sub esp, 4
mov dword [esp], edi
call sym._DeleteDC_4
mov eax, dword [ebp - 0x4c]
sub esp, 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [esp], eax
call sym._RestoreDC_8
mov eax, dword [ebp - 0x48]
sub esp, 8
mov dword [esp], eax
call sym._DeleteObject_4
mov eax, ebx
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [0x64ab50b0], 2
jne 0x64a576df
mov ebx, 6
jmp 0x64a574f4
mov dword [esp + 0xc], str.This_should_not_be_used_for_metafiles__fix_caller_n
mov dword [esp + 8], str.alpha_blend_pixels_hrgn
mov dword [esp + 4], 0x64ab50b0
mov dword [esp], 1
call sym._wine_dbg_log.constprop.1_3
jmp 0x64a576d5
mov eax, dword [ebp + 0x10]
add eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], ecx
add eax, edx
mov dword [esp], edx
mov dword [esp + 8], eax
call sym._CreateRectRgn_16
sub esp, 0x10
mov edi, eax
test eax, eax
je 0x64a57d58
mov eax, dword [ebp - 0x64]
lea edx, [ebp - 0x48]
call sym._get_clip_hrgn
mov ebx, eax
test eax, eax
jne 0x64a57a5d
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x64a57775
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], edi
call sym._CombineRgn_16
mov eax, dword [ebp - 0x48]
sub esp, 0x10
mov dword [esp], eax
call sym._DeleteObject_4
sub esp, 4
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x64a5779a
mov dword [esp + 0xc], 1
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], edi
call sym._CombineRgn_16
sub esp, 0x10
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], edi
call sym._GetRegionData_12
sub esp, 0xc
mov esi, eax
mov dword [esp + 8], esi
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x7c], eax
sub esp, 0xc
test eax, eax
je 0x64a57d4d
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov dword [esp], edi
call sym._GetRegionData_12
mov eax, dword [ebp - 0x7c]
sub esp, 0xc
mov edx, dword [eax + 8]
test edx, edx
je 0x64a57a36
test dword [ebp + 0x1c], 0x80000
jne 0x64a57a6d
add eax, 0x20
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x88], edi
mov dword [ebp - 0x8c], ebx
mov eax, dword [ebp - 0x84]
mov ecx, dword [eax + 0xc]
mov edi, dword [eax + 4]
mov dword [ebp - 0x68], ecx
sub ecx, edi
mov ebx, ecx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax]
mov eax, dword [ebp - 0x64]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x54], eax
test byte [0x64ab50b0], 8
jne 0x64a57cdd
mov eax, dword [ebp - 0x64]
mov esi, dword [eax + 0x5c]
test esi, esi
jne 0x64a57871
mov eax, dword [eax + 0x2c]
mov dword [ebp - 0x44], eax
test ebx, ebx
jle 0x64a57c75
mov eax, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x78]
mov edx, ecx
sub edx, eax
mov eax, edi
sub eax, ebx
imul eax, dword [ebp + 0x14]
lea eax, [eax + edx*4]
cmp dword [ebp - 0x50], ecx
jle 0x64a57c75
lea edx, [ecx*4]
mov dword [ebp - 0x6c], ecx
sub eax, edx
add eax, dword [ebp + 8]
mov dword [ebp - 0x4c], edi
mov edi, eax
lea esi, [esi]
nop
mov esi, dword [ebp - 0x6c]
jmp 0x64a579db
cmp ebx, 0xffffff
jbe 0x64a579cd
lea eax, [ebp - 0x40]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call sym.gdiplus.dll_GdipBitmapGetPixel
mov eax, dword [ebp - 0x40]
mov ecx, ebx
shr ecx, 0x18
sub esp, 0x10
mov dword [ebp - 0x58], eax
cmp ecx, 0xff
je 0x64a579b0
mov edx, eax
mov eax, 0xff
sub eax, ecx
shr edx, 0x18
imul eax, edx
cmp eax, 0xfe
jbe 0x64a579b0
mov edx, 0x80808081
mul edx
shr edx, 7
mov eax, edx
mov dword [ebp - 0x60], edx
add eax, ecx
movzx eax, al
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x58]
shr eax, 0x10
movzx eax, al
imul eax, edx
mov edx, ebx
shr edx, 0x10
movzx edx, dl
imul edx, ecx
add eax, edx
xor edx, edx
div dword [ebp - 0x5c]
mov edx, dword [ebp - 0x60]
shl eax, 0x10
and eax, 0xff0000
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x58]
movzx eax, ah
imul eax, edx
movzx edx, bh
movzx ebx, bl
imul edx, ecx
imul ebx, ecx
add eax, edx
xor edx, edx
div dword [ebp - 0x5c]
mov edx, dword [ebp - 0x70]
shl eax, 8
movzx eax, ax
or eax, edx
mov edx, dword [ebp - 0x5c]
shl edx, 0x18
or eax, edx
movzx edx, byte [ebp - 0x58]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x60]
imul edx, eax
lea eax, [ebx + edx]
xor edx, edx
div dword [ebp - 0x5c]
movzx ebx, al
mov eax, dword [ebp - 0x70]
or ebx, eax
lea esi, [esi]
mov dword [esp + 0xc], ebx
mov eax, dword [ebp - 0x4c]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call sym.gdiplus.dll_GdipBitmapSetPixel
sub esp, 0x10
mov eax, dword [ebp - 0x50]
add esi, 1
cmp esi, eax
je 0x64a57c60
cmp dword [ebp - 0x44], 1
mov ebx, dword [edi + esi*4]
jne 0x64a578c0
cmp ebx, 0xffffff
ja 0x64a579b0
mov dword [esp + 0xc], 0
jmp 0x64a579b4
add dword [ebp - 0x50], 1
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x50]
mov ebx, dword [ebp + 0x14]
add dword [ebp - 0x54], ebx
cmp eax, ecx
jne 0x64a57b00
mov edi, dword [ebp - 0x80]
mov eax, dword [ebp - 0x7c]
add dword [ebp - 0x70], 0x10
add edi, 1
cmp edi, dword [eax + 8]
jb 0x64a57a83
mov edi, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x7c]
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]
sub esp, 0xc
mov dword [esp], edi
call sym._DeleteObject_4
sub esp, 4
jmp 0x64a574f4
lea ecx, [eax + 0x20]
mov dword [ebp - 0x88], ebx
xor eax, eax
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x84], edi
mov edi, eax
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax + 0xc]
mov esi, dword [eax + 4]
mov dword [ebp - 0x68], ecx
sub ecx, esi
mov ebx, ecx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x58], ecx
mov ecx, dword [eax]
mov eax, dword [ebp - 0x64]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x5c], eax
test byte [0x64ab50b0], 8
jne 0x64a57ca0
mov eax, dword [ebp - 0x64]
mov edx, dword [eax + 0x5c]
test edx, edx
jne 0x64a57ac1
mov eax, dword [eax + 0x2c]
mov dword [ebp - 0x44], eax
test ebx, ebx
jle 0x64a57a1b
mov eax, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x78]
mov edx, ecx
sub edx, eax
mov eax, esi
sub eax, ebx
imul eax, dword [ebp + 0x14]
lea eax, [eax + edx*4]
cmp dword [ebp - 0x58], ecx
jle 0x64a57a1b
lea edx, [ecx*4]
mov dword [ebp - 0x50], esi
sub eax, edx
add eax, dword [ebp + 8]
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x80], edi
nop
mov esi, dword [ebp - 0x6c]
jmp 0x64a57c0d
cmp ebx, 0xffffff
jbe 0x64a57c01
lea eax, [ebp - 0x40]
mov edi, ebx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
shr edi, 0x18
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x5c]
mov dword [esp], ecx
call sym.gdiplus.dll_GdipBitmapGetPixel
mov edx, dword [ebp - 0x40]
mov eax, 0x80808081
sub esp, 0x10
shr edx, 0x18
mov ecx, edx
mov edx, 0xff
sub edx, edi
imul ecx, edx
mul ecx
shr edx, 7
mov ecx, edx
lea eax, [edx + edi]
mov edx, dword [ebp - 0x40]
movzx eax, al
shr edx, 0x10
mov dword [ebp - 0x4c], eax
movzx eax, dl
mov edx, ebx
shr edx, 0x10
imul eax, ecx
movzx edx, dl
mov edi, edx
shl edi, 8
sub edi, edx
xor edx, edx
add eax, edi
movzx edi, bh
div dword [ebp - 0x4c]
mov edx, ebx
movzx ebx, bl
and edx, 0xff00
sub edx, edi
shl eax, 0x10
and eax, 0xff0000
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x40]
movzx eax, ah
imul eax, ecx
add eax, edx
xor edx, edx
div dword [ebp - 0x4c]
mov edx, dword [ebp - 0x60]
shl eax, 8
movzx eax, ax
or edx, eax
mov eax, dword [ebp - 0x4c]
mov edi, edx
mov edx, ebx
shl eax, 0x18
shl edx, 8
or edi, eax
movzx eax, byte [ebp - 0x40]
sub edx, ebx
imul eax, ecx
add eax, edx
xor edx, edx
div dword [ebp - 0x4c]
movzx eax, al
or edi, eax
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x5c]
mov dword [esp], ecx
call sym.gdiplus.dll_GdipBitmapSetPixel
sub esp, 0x10
add esi, 1
cmp dword [ebp - 0x58], esi
je 0x64a57a00
mov eax, dword [ebp - 0x54]
cmp dword [ebp - 0x44], 1
mov ebx, dword [eax + esi*4]
jne 0x64a57b10
cmp ebx, 0xffffff
ja 0x64a57c50
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call sym.gdiplus.dll_GdipBitmapSetPixel
sub esp, 0x10
jmp 0x64a57c01
mov dword [esp + 0xc], ebx
jmp 0x64a57c2d
add dword [ebp - 0x4c], 1
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x4c]
add edi, dword [ebp + 0x14]
cmp eax, ecx
jne 0x64a578b0
mov ecx, dword [ebp - 0x7c]
add dword [ebp - 0x80], 1
add dword [ebp - 0x84], 0x10
mov eax, dword [ebp - 0x80]
cmp eax, dword [ecx + 8]
jb 0x64a57830
mov edi, dword [ebp - 0x88]
mov ebx, dword [ebp - 0x8c]
jmp 0x64a57a36
lea eax, [ebp - 0x44]
mov dword [ebp - 0x4c], ecx
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x64]
mov dword [esp + 0xc], 0x64ab9094
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.GdipGetCompositingMode
mov dword [esp + 4], 0x64ab50b0
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_4
mov ecx, dword [ebp - 0x4c]
jmp 0x64a57ab1
lea eax, [ebp - 0x44]
mov dword [ebp - 0x4c], ecx
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x64]
mov dword [esp + 0xc], 0x64ab9094
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.GdipGetCompositingMode
mov dword [esp + 4], 0x64ab50b0
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_4
mov ecx, dword [ebp - 0x4c]
jmp 0x64a57861
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], edx
shl eax, 2
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._convert_32bppARGB_to_32bppPARGB
jmp 0x64a5763b
mov dword [esp], edi
call sym._DeleteObject_4
sub esp, 4
mov ebx, 3
jmp 0x64a574f4
mov dword [esp + 4], 0x78
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [esp], eax
call sym._GetDeviceCaps_8
sub esp, 8
test eax, eax
jne 0x64a5760e
mov edx, dword [ebp - 0x44]
jmp 0x64a5761e