Function at 0x64a89170
Capabilities:
Get process heap flags

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x78
mov eax, dword [ecx + 8]
mov esi, dword [ecx + 0xc]
mov ebx, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x1c], eax
mov eax, esi
mov edi, dword [ecx + 0x10]
test esi, esi
movzx ecx, ah
mov eax, 0x18
cmovne eax, ecx
mov dword [ebp - 0x28], eax
test byte [0x64ab50d0], 8
jne 0x64a893b0
test edi, edi
je 0x64a893a0
test ebx, ebx
je 0x64a893a0
mov eax, dword fs:[0x18]
mov ecx, dword [eax + 0x24]
xor eax, eax
lock cmpxchg dword [ebx + 0x34], ecx
mov dword [ebp - 0x24], eax
test eax, eax
je 0x64a891ea
mov dword [ebp - 0x20], 4
cmp ecx, eax
jne 0x64a8937b
test edx, edx
je 0x64a89400
mov ecx, dword [edx]
test ecx, ecx
js 0x64a89390
mov eax, dword [edx + 4]
mov dword [ebp - 0x2c], eax
test eax, eax
js 0x64a89390
mov eax, dword [edx + 8]
mov dword [ebp - 0x30], eax
add eax, ecx
cmp eax, dword [ebx + 0x38]
jg 0x64a89390
mov edx, dword [edx + 0xc]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x34], edx
add eax, edx
cmp eax, dword [ebx + 0x3c]
jg 0x64a89390
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x64a89390
mov eax, dword [ebx + 0x44]
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x64a895e8
mov eax, dword [ebx + 0x54]
test eax, eax
je 0x64a89258
cmp dword [ebx + 0x40], esi
je 0x64a89610
mov eax, dword [ebp - 0x1c]
and eax, 1
mov dword [ebp - 0x38], eax
jne 0x64a89450
test byte [ebp - 0x1c], 2
jne 0x64a894d8
mov eax, dword [ebp - 0x30]
mov dword [edi + 0xc], esi
mov dword [edi], eax
mov eax, dword [ebp - 0x34]
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 0x14], eax
test al, 4
je 0x64a89580
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x64a89420
mov eax, dword [ebx + 0x40]
mov edx, dword [0x64ac206c]
mov dword [ebp - 0x28], eax
test edx, edx
je 0x64a89668
mov eax, dword [ebx + 0x28]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebx + 0x54]
mov dword [ebp - 0x48], eax
mov eax, dword [ebx + 0x58]
imul edx, eax
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x40], edx
test eax, eax
je 0x64a89703
mov eax, dword [ebp - 0x28]
movzx eax, ah
imul eax, ecx
mov dword [ebp - 0x38], eax
mov edx, dword [ebp - 0x4c]
mov dword [ebp - 0x3c], ecx
sar eax, 3
mov dword [esp + 0x24], edx
mov ecx, dword [ebp - 0x28]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp - 0x48]
add ecx, eax
mov dword [esp + 0x1c], ecx
mov eax, dword [ebp - 0x44]
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov eax, dword [edi + 0x10]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 8]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x34]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], eax
call sym._convert_pixels
mov ecx, dword [ebp - 0x3c]
test eax, eax
mov esi, eax
je 0x64a89420
mov edx, dword [ebx + 0x48]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], edx
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 - 0x24]
mov dword [ebx + 0x48], 0
sub esp, 0xc
test edx, edx
jne 0x64a89378
mov dword [ebx + 0x34], 0
mov dword [ebp - 0x20], esi
mov eax, dword [ebp - 0x20]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
mov ecx, dword [ebp - 0x24]
test ecx, ecx
jne 0x64a893a0
mov dword [ebx + 0x34], 0
nop
mov dword [ebp - 0x20], 2
jmp 0x64a8937b
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], esi
mov eax, dword [ebp - 0x1c]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
mov dword [ebp - 0x20], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], str._p__p__d_0x_x__p_n
mov dword [esp + 8], str.GdipBitmapLockBits
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_6
mov edx, dword [ebp - 0x20]
jmp 0x64a891b4
mov eax, dword [ebx + 0x38]
mov dword [ebp - 0x2c], 0
xor ecx, ecx
mov dword [ebp - 0x30], eax
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x34], eax
jmp 0x64a8923a
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 0x60], ecx
or eax, 1
mov dword [ebx + 0x44], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x64], eax
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x64a8937b
mov dword [ebx + 0x34], 0
jmp 0x64a8937b
mov dword [ebp - 0x3c], ecx
mov dword [esp + 0x24], 0
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._convert_pixels
mov ecx, dword [ebp - 0x3c]
cmp eax, 6
jne 0x64a89267
test byte [0x64ab50d0], 1
jne 0x64a8978d
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x64a894c9
mov dword [ebx + 0x34], 0
mov dword [ebp - 0x20], 6
jmp 0x64a8937b
mov dword [ebp - 0x3c], ecx
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov eax, dword [ebx + 0x40]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._convert_pixels
mov ecx, dword [ebp - 0x3c]
cmp eax, 6
jne 0x64a89271
test byte [0x64ab50d0], 1
je 0x64a894bb
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str.cannot_write_bitmap_from__x_to__x_n
mov dword [esp + 0x14], eax
mov dword [esp + 8], str.GdipBitmapLockBits
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 0
call sym._wine_dbg_log.constprop.1_5
jmp 0x64a894bb
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x34]
imul eax, edx
lea edx, [eax + 0xe]
add eax, 7
cmovs eax, edx
mov edx, dword fs:[0x18]
sar eax, 3
add eax, 3
and eax, 0xfffffffc
mov dword [edi + 8], eax
imul eax, ecx
mov dword [esp + 4], 8
mov dword [esp + 8], eax
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov ecx, dword [ebp - 0x3c]
sub esp, 0xc
test eax, eax
mov dword [ebx + 0x48], eax
je 0x64a89750
mov dword [edi + 0x10], eax
jmp 0x64a8928d
test byte [0x64ab50d0], 4
jne 0x64a896b8
mov edx, dword [ebp - 0x24]
test edx, edx
jne 0x64a89603
mov dword [ebx + 0x34], 0
mov dword [ebp - 0x20], 8
jmp 0x64a8937b
test byte [ebp - 0x1c], 4
jne 0x64a89258
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x28]
mov dword [edi + 0xc], esi
mov esi, dword [ebp - 0x1c]
mov dword [edi], eax
mov eax, dword [ebp - 0x34]
sar edx, 3
mov dword [edi + 0x14], esi
imul edx, ecx
mov ecx, dword [ebp - 0x2c]
mov dword [edi + 4], eax
mov eax, dword [ebx + 0x58]
imul ecx, eax
mov dword [edi + 8], eax
mov eax, esi
or eax, 1
add edx, ecx
add edx, dword [ebx + 0x54]
mov dword [edi + 0x10], edx
mov dword [ebx + 0x44], eax
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x64a8937b
jmp 0x64a8943d
test eax, eax
je 0x64a896e8
movzx eax, ah
imul eax, ecx
mov dword [ebp - 0x38], eax
test al, 7
je 0x64a8976a
test byte [0x64ab50d0], 1
jne 0x64a89711
mov eax, dword [ebx + 0x28]
mov edx, dword [ebp - 0x2c]
mov dword [0x64ac206c], 1
mov dword [ebp - 0x4c], eax
mov eax, dword [ebx + 0x54]
mov dword [ebp - 0x48], eax
mov eax, dword [ebx + 0x58]
imul edx, eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], edx
jmp 0x64a892d2
mov dword [esp + 0xc], str.bitmap_is_already_locked_and_cannot_be_locked_again_n
mov dword [esp + 8], str.GdipBitmapLockBits
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 2
call sym._wine_dbg_log.constprop.1_5
jmp 0x64a895f5
mov eax, dword [ebx + 0x28]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebx + 0x54]
mov dword [ebp - 0x48], eax
mov eax, dword [ebx + 0x58]
imul edx, eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], edx
lea eax, [ecx + ecx*2]
shl eax, 3
mov dword [ebp - 0x38], eax
jmp 0x64a892de
mov dword [ebp - 0x38], ecx
mov dword [esp + 0xc], str.Cannot_copy_rows_that_dont_start_at_a_whole_byte._n
mov dword [esp + 8], str.GdipBitmapLockBits
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 0
call sym._wine_dbg_log.constprop.1_5
mov eax, dword [ebx + 0x40]
mov ecx, dword [ebp - 0x38]
mov dword [0x64ac206c], 1
mov dword [ebp - 0x28], eax
jmp 0x64a892ac
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x64a8975e
mov dword [ebx + 0x34], 0
mov dword [ebp - 0x20], 3
jmp 0x64a8937b
mov eax, dword [ebx + 0x28]
mov edx, dword [ebx + 0x58]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebx + 0x54]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x2c]
imul eax, edx
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x38]
jmp 0x64a892de
mov dword [esp + 0x14], esi
mov eax, dword [ebx + 0x40]
mov dword [esp + 0xc], str.cannot_read_bitmap_from__x_to__x_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.GdipBitmapLockBits
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 0
call sym._wine_dbg_log.constprop.1_5
jmp 0x64a894bb