Function at 0x64a8ac30
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, 0x68
mov edi, dword [ecx + 0x14]
mov ebx, dword [ecx + 0x18]
fld dword [ecx]
mov esi, dword [ecx + 0x10]
test edi, edi
fld dword [ecx + 4]
fld dword [ecx + 8]
sete dl
test ebx, ebx
fld dword [ecx + 0xc]
sete al
or edx, eax
test byte [0x64ab50d0], 8
jne 0x64a8aee8
test dl, dl
jne 0x64a8afe0
cmp dword [edi + 8], 1
jne 0x64a8aff0
fldz
fcomi st(4)
ja 0x64a8af60
fcompi st(3)
ja 0x64a8af70
fild dword [edi + 0x38]
fld st(2)
fadd st(5)
fcompi st(1)
fstp st(0)
ja 0x64a8af80
fild dword [edi + 0x3c]
fld st(1)
fadd st(4)
fcompi st(1)
fstp st(0)
ja 0x64a8af90
test esi, esi
jne 0x64a8acc8
fxch st(2)
mov esi, dword [edi + 0x40]
jmp 0x64a8acca
fxch st(2)
fnstcw word [ebp - 0x1a]
fstp dword [ebp - 0x30]
fxch st(2)
fstp dword [ebp - 0x2c]
fld dword [0x64abe9f8]
movzx eax, word [ebp - 0x1a]
and ah, 0xf3
faddp st(2)
fxch st(1)
or ah, 4
mov word [ebp - 0x1c], ax
movzx eax, word [ebp - 0x1a]
fldcw word [ebp - 0x1c]
frndint
fldcw word [ebp - 0x1a]
or ah, 0xc
mov word [ebp - 0x1e], ax
fldcw word [ebp - 0x1e]
fistp dword [ebp - 0x24]
fldcw word [ebp - 0x1a]
fld dword [0x64abe9f8]
mov edx, dword [ebp - 0x24]
faddp st(1)
fldcw word [ebp - 0x1c]
frndint
fldcw word [ebp - 0x1a]
fldcw word [ebp - 0x1e]
fistp dword [ebp - 0x24]
fldcw word [ebp - 0x1a]
mov eax, dword [ebp - 0x24]
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [ebp - 0x28], edx
mov dword [esp], edx
call sym.gdiplus.dll_GdipCreateBitmapFromScan0
sub esp, 0x18
mov esi, eax
test eax, eax
jne 0x64a8b022
mov edx, dword [edi + 0x40]
mov ecx, dword [edi + 0x54]
mov eax, dword [edi + 0x58]
mov esi, dword [edi + 0x28]
fnstcw word [ebp - 0x1a]
fld dword [ebp - 0x30]
fadd dword [0x64abe9f8]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], eax
movzx eax, word [ebp - 0x1a]
and ah, 0xf3
or ah, 4
mov word [ebp - 0x1c], ax
movzx eax, word [ebp - 0x1a]
fldcw word [ebp - 0x1c]
frndint
fldcw word [ebp - 0x1a]
or ah, 0xc
mov word [ebp - 0x1e], ax
mov eax, dword [ebp - 0x34]
fldcw word [ebp - 0x1e]
fistp dword [ebp - 0x30]
fldcw word [ebp - 0x1a]
mov ecx, dword [ebp - 0x30]
fld dword [0x64abe9f8]
fld dword [ebp - 0x2c]
imul ecx, eax
test edx, edx
movzx eax, dh
faddp st(1)
mov dword [ebp - 0x30], ecx
mov ecx, 0x18
cmove eax, ecx
mov ecx, dword [ebx]
fldcw word [ebp - 0x1c]
frndint
fldcw word [ebp - 0x1a]
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], edx
fldcw word [ebp - 0x1e]
fistp dword [ebp - 0x2c]
fldcw word [ebp - 0x1a]
mov edx, dword [ebp - 0x2c]
imul edx, eax
test edx, edx
lea eax, [edx + 7]
cmovns eax, edx
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x38]
sar eax, 3
add eax, edx
add eax, esi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x34]
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x54]
mov dword [esp + 0xc], eax
mov eax, dword [ecx + 0x58]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov edx, dword [ebp - 0x28]
mov dword [esp], edx
call sym._convert_pixels
mov esi, eax
test eax, eax
jne 0x64a8b015
mov edi, dword [edi + 0x28]
test edi, edi
je 0x64a8affd
mov eax, dword [edi + 4]
mov dword [esp + 4], 8
mov edx, dword fs:[0x18]
lea eax, [eax*4 + 8]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x30]
mov dword [ebp - 0x24], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
mov edx, eax
test eax, eax
je 0x64a8b010
mov eax, dword [edi]
lea ecx, [edx + 8]
add edi, 8
mov dword [ebp - 0x28], edx
mov dword [edx], eax
mov eax, dword [edi - 4]
mov dword [edx + 4], eax
shl eax, 2
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], ecx
call sym._memcpy
mov eax, dword [ebx]
mov eax, dword [eax + 0x28]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [ebx]
mov edx, dword [ebp - 0x28]
sub esp, 0xc
mov dword [eax + 0x28], edx
jmp 0x64a8affd
mov byte [ebp - 0x34], dl
fst qword [esp + 0x28]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], esi
fstp dword [ebp - 0x30]
fst qword [esp + 0x20]
fstp dword [ebp - 0x2c]
fst qword [esp + 0x18]
fstp dword [ebp - 0x28]
fst qword [esp + 0x10]
fstp dword [ebp - 0x24]
mov dword [esp + 0xc], str.__f__f__f__f_0x_x__p__p__n
mov dword [esp + 8], str.GdipCloneBitmapArea
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_6
movzx edx, byte [ebp - 0x34]
fld dword [ebp - 0x24]
fld dword [ebp - 0x28]
fld dword [ebp - 0x2c]
test dl, dl
fld dword [ebp - 0x30]
jne 0x64a8afa0
cmp dword [edi + 8], 1
je 0x64a8ac83
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x64a8afb0
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x64a8afb0
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x64a8afb0
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x64a8afb0
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x64a8afb0
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
lea esi, [esi]
nop
test byte [0x64ab50d0], 8
je 0x64a8aff8
mov dword [esp + 0xc], str.____InvalidParameter_n
mov dword [esp + 8], str.GdipCloneBitmapArea
mov dword [esp + 4], 0x64ab50d0
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_6
jmp 0x64a8aff8
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x64a8aff8
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
mov esi, 2
lea esp, [ebp - 0x10]
mov eax, esi
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x1c
mov esi, 3
mov eax, dword [ebx]
mov dword [esp], eax
call sym.gdiplus.dll_GdipDisposeImage
sub esp, 4
mov dword [ebx], 0
lea esp, [ebp - 0x10]
mov eax, esi
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x1c