Function at 0x6905b140
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, 0x4a8
mov eax, dword [ecx + 8]
mov ebx, dword [ecx]
mov dword [ebp - 0x47c], eax
lea eax, [ebp - 0x478]
mov dword [esp + 8], eax
mov eax, 0x18
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.gdi32.dll_GetObjectA]
sub esp, 0xc
cmp eax, 0x18
jne 0x6905b1a0
movzx eax, word [ebp - 0x466]
cmp eax, 0x30
ja case.0x6905b192.0
jmp dword [eax*4 + 0x690811a4]
mov edi, 2
lea esp, [ebp - 0x10]
mov eax, edi
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0xc
test byte [0x6907a0e8], 1
mov edi, 2
je 0x6905b1a5
mov edx, str.dont_know_how_to_handle__d_bpp_n
mov ecx, str.GdipCreateBitmapFromHBITMAP
mov dword [esp + 0x10], eax
mov ebx, 0x6907a0e8
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_6
jmp 0x6905b1a5
mov esi, 0x10300c
mov dword [esp + 0xc], esi
mov eax, dword [ebp - 0x47c]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x470]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x474]
mov dword [esp], eax
call sym.gdiplus.dll_GdipCreateBitmapFromScan0
sub esp, 0x18
test eax, eax
mov edi, eax
jne 0x6905b1a5
mov dword [esp + 0xc], esi
lea eax, [ebp - 0x460]
mov dword [esp + 0x10], eax
mov eax, 2
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x47c]
mov eax, dword [eax]
mov dword [esp], eax
call sym.gdiplus.dll_GdipBitmapLockBits
sub esp, 0x14
test eax, eax
mov edi, eax
je 0x6905b3b0
mov esi, dword [ebp - 0x47c]
mov eax, dword [esi]
mov dword [esp], eax
call sym.gdiplus.dll_GdipDisposeImage
mov dword [esi], 0
sub esp, 4
jmp 0x6905b1a5
mov esi, 0x22009
jmp 0x6905b1fd
mov esi, 0x21808
jmp 0x6905b1fd
mov dword [esp], 0
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
xor edx, edx
mov esi, eax
sub esp, 4
xor eax, eax
mov dword [ebp + eax - 0x43c], edx
mov dword [ebp + eax - 0x438], edx
add eax, 8
cmp eax, 0x60
jb 0x6905b2ce
mov eax, 0x6c
xor edi, edi
mov dword [ebp - 0x448], eax
mov eax, 1
mov edx, 3
mov dword [ebp - 0x444], eax
mov eax, 1
mov ecx, 0x10
mov dword [ebp - 0x440], eax
lea eax, [ebp - 0x448]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 0x18], edi
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [ebp - 0x438], edx
mov word [ebp - 0x43a], cx
call dword [sym.imp.gdi32.dll_GetDIBits]
mov eax, dword [ebp - 0x420]
sub esp, 0x1c
cmp eax, 0x7c00
je 0x6905b7ba
cmp eax, 0xf800
jne 0x6905b376
cmp dword [ebp - 0x41c], 0x7e0
je 0x6905b89c
test byte [0x6907a0e8], 1
jne 0x6905b7f0
mov dword [esp], esi
mov edi, 2
call dword [sym.imp.gdi32.dll_DeleteDC]
sub esp, 4
jmp 0x6905b1a5
mov esi, 0x30101
jmp 0x6905b1fd
mov dword [esp], 0
mov esi, 0x28
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
xor edx, edx
xor ecx, ecx
mov word [ebp - 0x43a], dx
xor edx, edx
mov dword [ebp - 0x448], esi
lea esi, [ebp - 0x448]
mov dword [ebp - 0x498], eax
sub esp, 4
mov dword [esp + 0x10], edx
xor edx, edx
mov dword [esp + 8], edx
mov edx, dword [sym.imp.gdi32.dll_GetDIBits]
mov dword [esp + 0x18], ecx
xor ecx, ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 4], ebx
mov dword [esp + 0x14], esi
mov dword [esp], eax
mov dword [ebp - 0x480], edx
call edx
mov ecx, dword [ebp - 0x440]
mov edx, dword [ebp - 0x440]
sar ecx, 0x1f
xor edx, ecx
mov eax, edx
sub esp, 0x1c
mov edx, dword [ebp - 0x480]
mov dword [esp + 4], ebx
sub eax, ecx
mov ebx, dword [ebp - 0x498]
mov dword [esp + 0xc], eax
mov ecx, eax
xor eax, eax
mov dword [esp + 0x14], esi
neg ecx
mov dword [ebp - 0x440], ecx
xor ecx, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0x450]
mov dword [esp + 8], eax
mov dword [esp], ebx
mov dword [esp + 0x10], ecx
call edx
sub esp, 0x1c
mov dword [esp], ebx
call dword [sym.imp.gdi32.dll_DeleteDC]
lea eax, [ebp - 0x460]
sub esp, 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x47c]
mov eax, dword [eax]
mov dword [esp], eax
call sym.gdiplus.dll_GdipBitmapUnlockBits
movzx ecx, word [ebp - 0x43a]
sub esp, 8
cmp ecx, 8
ja 0x6905b1a5
mov eax, dword [ebp - 0x428]
mov dword [ebp - 0x480], eax
test eax, eax
jne 0x6905b848
mov eax, 1
shl eax, cl
mov dword [ebp - 0x480], eax
mov ebx, eax
lea edx, [ebx*4 + 8]
mov ebx, 8
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
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]
sub esp, 0xc
test eax, eax
mov ebx, eax
je 0x6905b8d2
mov dword [eax], 0
mov eax, dword [ebp - 0x480]
mov dword [ebx + 4], eax
mov edx, dword [ebp - 0x480]
lea eax, [edx - 1]
cmp eax, 0xe
jbe 0x6905b8bf
mov dword [ebp - 0x484], ebx
shr edx, 4
xor ecx, ecx
mov dword [ebp - 0x498], edx
lea eax, [ebx + 8]
pxor xmm7, xmm7
mov ebx, dword [ebp - 0x498]
lea edx, [ebp - 0x420]
movdqu xmm0, xmmword [edx]
movdqu xmm5, xmmword [edx + 0x10]
movdqu xmm3, xmmword [edx + 0x20]
movdqu xmm2, xmmword [0x690839c0]
movdqu xmm1, xmmword [0x690839c0]
pand xmm2, xmm0
pand xmm1, xmm5
movdqu xmm4, xmmword [0x690839c0]
packuswb xmm2, xmm1
pand xmm4, xmm3
movdqu xmm1, xmmword [edx + 0x30]
pand xmm1, xmmword [0x690839c0]
packuswb xmm4, xmm1
movdqu xmm1, xmmword [0x690839c0]
pand xmm1, xmm2
psrlw xmm2, 8
psrlw xmm5, 8
movdqu xmm6, xmmword [0x690839c0]
psrlw xmm0, 8
pand xmm6, xmm4
psrlw xmm3, 8
packuswb xmm1, xmm6
psrlw xmm4, 8
movdqu xmm6, xmm2
movdqu xmm2, xmmword [edx + 0x30]
psrlw xmm2, 8
packuswb xmm6, xmm4
packuswb xmm0, xmm5
movdqu xmm4, xmm6
packuswb xmm3, xmm2
movdqu xmm5, xmm1
pand xmm3, xmmword [0x690839c0]
movdqu xmm2, xmm6
pand xmm0, xmmword [0x690839c0]
pxor xmm6, xmm6
packuswb xmm0, xmm3
punpcklbw xmm2, xmm6
punpckhbw xmm4, xmm6
punpcklbw xmm5, xmm6
punpckhbw xmm1, xmm6
movdqu xmmword [ebp - 0x498], xmm4
movdqu xmm3, xmm2
movdqu xmm4, xmm0
punpcklwd xmm3, xmm7
punpcklbw xmm4, xmm6
punpckhbw xmm0, xmm6
psllw xmm4, 8
movdqu xmm6, xmm3
punpckhwd xmm2, xmm7
pslld xmm6, 0x10
pslld xmm2, 0x10
psllw xmm0, 8
movdqu xmm3, xmm5
punpckhwd xmm5, xmm7
punpcklwd xmm3, xmm7
por xmm5, xmmword [0x69083a20]
por xmm3, xmmword [0x69083a20]
por xmm2, xmm5
por xmm3, xmm6
movdqu xmm5, xmmword [ebp - 0x498]
movdqu xmm6, xmm4
punpcklwd xmm6, xmm7
por xmm3, xmm6
movdqu xmmword [eax], xmm3
movdqu xmm3, xmm5
punpcklwd xmm3, xmm7
pslld xmm3, 0x10
inc ecx
punpckhwd xmm4, xmm7
por xmm2, xmm4
movdqu xmmword [eax + 0x10], xmm2
movdqu xmm2, xmm1
punpcklwd xmm2, xmm7
por xmm2, xmmword [0x69083a20]
por xmm2, xmm3
movdqu xmm3, xmm0
punpcklwd xmm3, xmm7
por xmm2, xmm3
movdqu xmmword [eax + 0x20], xmm2
movdqu xmm2, xmm5
punpckhwd xmm2, xmm7
pslld xmm2, 0x10
add edx, 0x40
punpckhwd xmm1, xmm7
add eax, 0x40
por xmm1, xmmword [0x69083a20]
punpckhwd xmm0, xmm7
por xmm1, xmm2
por xmm0, xmm1
movdqu xmmword [eax - 0x10], xmm0
cmp ecx, ebx
jne 0x6905b540
mov eax, dword [ebp - 0x480]
mov ebx, dword [ebp - 0x484]
mov edx, eax
and edx, 0xfffffff0
test al, 0xf
je 0x6905b74f
mov dword [ebp - 0x498], edi
mov ecx, dword [ebp - 0x480]
lea esi, [esi]
nop
movzx eax, byte [esi + edx*4 + 0x29]
shl eax, 8
mov edi, eax
movzx eax, byte [esi + edx*4 + 0x2a]
shl eax, 0x10
or eax, edi
movzx edi, byte [esi + edx*4 + 0x28]
or eax, edi
or eax, 0xff000000
mov dword [ebx + edx*4 + 8], eax
inc edx
cmp edx, ecx
jl 0x6905b720
mov edi, dword [ebp - 0x498]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x47c]
mov eax, dword [eax]
mov dword [esp], eax
call sym.gdiplus.dll_GdipSetImagePalette
xor edx, edx
sub esp, 8
mov esi, eax
mov dword [esp + 8], ebx
mov dword [esp + 4], edx
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_HeapFree]
sub esp, 0xc
test esi, esi
je 0x6905b1a5
mov edi, esi
jmp 0x6905b276
mov esi, 0x30803
jmp 0x6905b1fd
mov esi, 0x30402
jmp 0x6905b1fd
cmp dword [ebp - 0x41c], 0x3e0
jne 0x6905b376
cmp dword [ebp - 0x418], 0x1f
jne 0x6905b376
mov dword [esp], esi
mov esi, 0x21005
call dword [sym.imp.gdi32.dll_DeleteDC]
sub esp, 4
jmp 0x6905b1fd
mov dword [esp + 0x10], eax
mov edx, dword [ebp - 0x418]
mov eax, str.get_16bpp_format
mov dword [esp + 8], eax
mov edi, str.unrecognized_bitfields__lx__lx__lx_n
mov eax, 0x6907a0e8
mov dword [esp + 0xc], edi
mov edi, 2
mov dword [esp + 4], eax
mov dword [esp + 0x18], edx
mov edx, dword [ebp - 0x41c]
mov dword [esp], 0
mov dword [esp + 0x14], edx
call sym._wine_dbg_log.constprop.0_6
mov dword [esp], esi
call dword [sym.imp.gdi32.dll_DeleteDC]
sub esp, 4
jmp 0x6905b1a5
mov ebx, dword [ebp - 0x480]
mov ecx, 8
mov dword [esp + 4], ecx
mov eax, dword fs:[0x18]
lea edx, [ebx*4 + 8]
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_HeapAlloc]
sub esp, 0xc
test eax, eax
mov ebx, eax
je 0x6905b8d2
mov dword [eax], 0
mov eax, dword [ebp - 0x480]
mov dword [ebx + 4], eax
test eax, eax
jg 0x6905b50a
jmp 0x6905b74f
cmp dword [ebp - 0x418], 0x1f
jne 0x6905b376
mov dword [esp], esi
mov esi, 0x21006
call dword [sym.imp.gdi32.dll_DeleteDC]
sub esp, 4
jmp 0x6905b1fd
mov dword [ebp - 0x498], edi
mov ecx, dword [ebp - 0x480]
xor edx, edx
jmp 0x6905b720
mov dword [esp + 8], 0
mov edi, 3
mov dword [esp + 4], 0
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_HeapFree]
sub esp, 0xc
jmp 0x6905b276