Function at 0x6902bd30
Capabilities:
Access peb ldr_data
Get kernel32 base address
Get process heap flags

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
sub esp, 0x25c
mov dword [ebp - 0x1f8], eax
mov esi, dword [edi + 8]
mov dword [ebp - 0x1bc], ecx
mov eax, dword [edi]
inc ecx
mov dword [ebp - 0x1cc], edx
mov ebx, dword [edi + 0x10]
mov dword [ebp - 0x21c], esi
mov esi, dword [edi + 0xc]
mov dword [ebp - 0x1c0], eax
mov eax, dword [edi + 4]
mov edi, dword [edi + 0x14]
mov dword [ebp - 0x1c8], edi
je 0x6902c858
mov edi, dword [ebp - 0x1f8]
mov edx, dword [edi + 0x14]
test edx, edx
je 0x6902bd9a
cmp dword [edi + 0x18], 2
je 0x6902c7e0
mov edi, dword [ebp - 0x1f8]
mov eax, dword [edi]
test eax, eax
je 0x6902bdb7
mov edi, dword [edi + 0xc]
mov dword [ebp - 0x1e8], edi
test edi, edi
je 0x6902c3b8
mov eax, dword [ebp - 0x1bc]
test eax, eax
jle 0x6902c9c0
mov eax, ebx
and eax, 1
cmp eax, 1
sbb eax, eax
and eax, 0x80
add eax, 6
mov dword [ebp - 0x1f4], eax
mov eax, ebx
and eax, 0xfffffffa
jne 0x6902c6f0
mov eax, dword [ebp - 0x1bc]
mov edi, dword fs:[0x18]
lea edx, [eax*8]
mov eax, 8
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [ebp - 0x1b8], edx
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x224], eax
call eax
mov dword [ebp - 0x214], eax
sub esp, 0xc
test eax, eax
je 0x6902d268
and ebx, 4
mov edx, dword [ebp - 0x1b8]
mov dword [ebp - 0x1e8], ebx
je 0x6902c730
mov edx, dword [esi + 4]
mov ebx, 1
mov edi, 4
mov eax, dword [esi]
xor esi, esi
mov dword [esp + 8], esi
mov esi, dword [ebp - 0x1f8]
mov dword [esp + 0x10], ebx
lea ebx, [ebp - 0x94]
mov dword [esp + 0xc], ebx
mov dword [esp + 4], edi
mov dword [esp], esi
mov dword [ebp - 0x90], edx
mov dword [ebp - 0x94], eax
call sym._gdip_transform_points
mov eax, dword [ebp - 0x214]
mov ecx, 1
mov edx, ebx
call sym._round_points
mov eax, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [ebp - 0x228], eax
mov eax, dword [ebp - 0x1c8]
lea ecx, [ebp - 0x98]
mov dword [esp], 0
mov edx, dword [ebp - 0x1c0]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1f8]
call sym._get_font_hfont.isra.0
mov dword [esp], 0
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
mov dword [ebp - 0x1ec], eax
mov esi, eax
mov eax, dword [ebp - 0x98]
sub esp, 4
mov dword [esp], esi
xor esi, esi
mov dword [esp + 4], eax
call dword [sym.imp.gdi32.dll_SelectObject]
mov eax, 0x7fffffff
mov edx, 0x80000000
mov dword [ebp - 0x1d4], eax
xor ecx, ecx
mov eax, 0x7fffffff
mov dword [ebp - 0x1d0], eax
mov ebx, dword [ebp - 0x214]
mov dword [ebp - 0x1b8], ecx
mov dword [ebp - 0x1c8], edx
sub esp, 8
jmp 0x6902bf60
mov edi, dword [ebp - 0x1e8]
test edi, edi
je 0x6902c840
movsx eax, word [ebp - 0x64]
mov edi, dword [ebx]
mov ecx, dword [ebx + 4]
add eax, edi
mov dword [ebx + 8], eax
movsx eax, word [ebp - 0x62]
add eax, ecx
mov dword [ebx + 0xc], eax
add ebx, 8
mov dword [ebp - 0x1c0], edx
mov eax, 0x6907ee70
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x74]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x1f4]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1cc]
movzx eax, word [eax + esi*2]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1ec]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetGlyphOutlineW]
mov edx, dword [ebp - 0x1c0]
sub esp, 0x1c
cmp eax, 0xffffffff
je 0x6902c890
mov ecx, dword [ebp - 0x1b8]
cmp ecx, eax
cmovb ecx, eax
test eax, eax
mov dword [ebp - 0x1b8], ecx
je 0x6902c021
mov ecx, dword [ebx]
mov eax, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x68]
add eax, ecx
mov ecx, dword [ebx + 4]
sub ecx, edi
mov edi, dword [ebp - 0x1d0]
cmp edi, eax
cmovg edi, eax
mov dword [ebp - 0x1d0], edi
mov edi, dword [ebp - 0x1d4]
cmp edi, ecx
cmovg edi, ecx
mov dword [ebp - 0x1d4], edi
mov edi, dword [ebp - 0x74]
add eax, edi
mov edi, dword [ebp - 0x1c8]
cmp edi, eax
cmovge eax, edi
mov dword [ebp - 0x1c8], eax
mov eax, dword [ebp - 0x70]
add ecx, eax
cmp edx, ecx
cmovl edx, ecx
inc esi
cmp dword [ebp - 0x1bc], esi
jg 0x6902bf38
mov ebx, dword [ebp - 0x1b8]
mov edi, edx
mov edx, dword [ebp - 0x1c8]
test ebx, ebx
je 0x6902c938
mov dword [ebp - 0x1c0], edx
mov eax, dword [ebp - 0x1b8]
mov ebx, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, 8
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x224]
call eax
mov edx, dword [ebp - 0x1c0]
mov esi, edx
mov dword [ebp - 0x210], eax
mov eax, dword [ebp - 0x1d0]
sub esp, 0xc
sub esi, eax
mov eax, dword [ebp - 0x1d4]
mov dword [ebp - 0x1f0], esi
sub edi, eax
mov eax, 8
mov dword [esp + 4], eax
imul esi, edi
mov dword [ebp - 0x230], edi
mov dword [esp + 8], esi
mov dword [ebp - 0x234], esi
mov eax, dword [ebx + 0x30]
mov ebx, dword [ebp - 0x224]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov edx, dword [ebp - 0x210]
mov dword [ebp - 0x22c], eax
sub esp, 0xc
test edx, edx
je 0x6902d295
test eax, eax
je 0x6902d295
mov ebx, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1cc]
add ebx, 4
mov dword [ebp - 0x218], ebx
mov ebx, dword [ebp - 0x1bc]
mov dword [ebp - 0x1d8], eax
lea eax, [eax + ebx*2]
mov dword [ebp - 0x220], eax
jmp 0x6902c138
add dword [ebp - 0x1d8], 2
add dword [ebp - 0x218], 8
mov eax, dword [ebp - 0x1d8]
cmp eax, dword [ebp - 0x220]
je 0x6902c9d0
mov eax, dword [ebp - 0x210]
mov esi, 0x6907ee70
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x1b8]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x74]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x1f4]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1d8]
movzx eax, word [eax]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1ec]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetGlyphOutlineW]
movdqu xmm3, xmmword [str.________]
movdqu xmm5, xmmword [0x6907fcb0]
dec eax
sub esp, 0x1c
cmp eax, 0xfffffffd
ja 0x6902c118
mov ebx, dword [ebp - 0x218]
mov eax, dword [ebp - 0x6c]
mov edx, dword [ebx - 4]
mov ecx, dword [ebx]
mov ebx, dword [ebp - 0x68]
lea esi, [edx + eax]
sub ecx, ebx
mov ebx, dword [ebp - 0x74]
mov dword [ebp - 0x1bc], ebx
add ebx, 3
mov edi, ebx
and edi, 0xfffffffc
mov dword [ebp - 0x200], edi
mov edi, dword [ebp - 0x70]
mov dword [ebp - 0x1fc], edi
test edi, edi
je 0x6902c118
mov dword [ebp - 0x1c0], 0
mov ebx, dword [ebp - 0x210]
mov edi, esi
mov esi, dword [ebp - 0x1d0]
mov dword [ebp - 0x1cc], ebx
mov ebx, eax
sub edi, esi
sub ebx, esi
mov dword [ebp - 0x1c8], edi
mov edi, esi
mov esi, dword [ebp - 0x1d4]
sub edi, eax
add ebx, edx
mov eax, edi
sub eax, edx
mov edx, dword [ebp - 0x1c8]
sub ecx, esi
mov esi, dword [ebp - 0x1f0]
add eax, edx
mov dword [ebp - 0x208], eax
imul ecx, esi
mov esi, dword [ebp - 0x22c]
add ecx, ebx
lea ebx, [esi + ecx]
mov ecx, dword [ebp - 0x1bc]
lea eax, [ecx - 1]
mov esi, ecx
mov dword [ebp - 0x20c], eax
mov eax, dword [ebp - 0x1cc]
and esi, 0xfffffff0
mov dword [ebp - 0x204], esi
mov esi, ecx
and esi, 0xfffffff0
mov edi, esi
mov esi, eax
lea esi, [esi]
lea esi, [esi]
nop
mov dword [ebp - 0x1c8], esi
mov eax, dword [ebp - 0x208]
lea ecx, [eax + ebx]
mov eax, dword [ebp - 0x1bc]
test eax, eax
je 0x6902c387
xor eax, eax
cmp dword [ebp - 0x20c], 0xe
jbe 0x6902c33b
pxor xmm2, xmm2
pxor xmm4, xmm4
lea esi, [esi]
lea esi, [esi]
nop
movdqu xmm6, xmmword [ebx + eax]
movdqu xmm7, xmmword [esi + eax]
movdqu xmm0, xmm6
movdqu xmm1, xmm7
punpcklbw xmm0, xmm2
punpcklbw xmm1, xmm2
paddw xmm1, xmm0
punpckhbw xmm6, xmm2
punpckhbw xmm7, xmm2
movdqu xmm0, xmm1
paddw xmm6, xmm7
psubusw xmm0, xmm3
pcmpeqw xmm0, xmm4
pand xmm1, xmm0
pandn xmm0, xmm3
por xmm0, xmm1
movdqu xmm1, xmm6
psubusw xmm1, xmm3
pcmpeqw xmm1, xmm4
pand xmm0, xmm5
pand xmm6, xmm1
pandn xmm1, xmm3
por xmm1, xmm6
pand xmm1, xmm5
packuswb xmm0, xmm1
movdqu xmmword [ebx + eax], xmm0
add eax, 0x10
cmp eax, dword [ebp - 0x204]
jne 0x6902c2b0
lea eax, [esi + edi]
add ecx, edi
cmp dword [ebp - 0x1bc], edi
mov dword [ebp - 0x1c8], eax
je 0x6902c387
mov eax, edi
mov dword [ebp - 0x1e8], ebx
mov edx, eax
sub ecx, eax
neg edx
mov dword [ebp - 0x1cc], edx
lea esi, [esi]
mov ebx, dword [ebp - 0x1cc]
mov edx, dword [ebp - 0x1c8]
add edx, ebx
movzx edx, byte [edx + eax]
mov ebx, edx
movzx edx, byte [ecx + eax]
add edx, ebx
mov ebx, 0x40
cmp edx, 0x40
cmovg edx, ebx
mov byte [ecx + eax], dl
inc eax
cmp dword [ebp - 0x1bc], eax
ja 0x6902c350
mov ebx, dword [ebp - 0x1e8]
inc dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x200]
mov ecx, dword [ebp - 0x1f0]
mov eax, dword [ebp - 0x1c0]
add esi, edx
add ebx, ecx
cmp eax, dword [ebp - 0x1fc]
jne 0x6902c270
jmp 0x6902c118
mov ecx, dword [ebp - 0x21c]
mov edi, dword [ecx]
mov dword [ebp - 0x1b8], edi
test edi, edi
jne 0x6902bdb7
mov edi, dword [ecx + 4]
mov dword [ebp - 0x1d0], edi
mov edx, edi
and edx, 0xff000000
cmp edx, 0xff000000
jne 0x6902bdb7
mov edx, ebx
shr ebx, 2
not edx
and edx, 1
xor ebx, 1
shl edx, 4
cmp dword [ebp - 0x1bc], 1
mov dword [ebp - 0x1d4], edx
setg dl
and dl, bl
mov byte [ebp - 0x1d8], dl
jne 0x6902cf29
xor edx, edx
xor ebx, ebx
mov dword [ebp - 0x1d0], edx
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SaveDC]
mov edi, dword [ebp - 0x1f8]
mov dword [ebp - 0x1ec], eax
sub esp, 4
mov eax, 1
mov dword [esp + 4], eax
mov eax, dword [edi]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SetBkMode]
mov eax, dword [ebp - 0x21c]
sub esp, 8
call sym._get_gdi_brush_color
mov dword [esp + 4], eax
mov eax, dword [edi]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SetTextColor]
lea edx, [ebp - 0x98]
mov eax, edi
sub esp, 8
call sym._get_clip_hrgn
test eax, eax
je 0x6902ceeb
mov eax, dword [esi]
mov ecx, 4
mov edx, dword [esi + 4]
mov dword [esp + 4], ecx
mov edi, dword [ebp - 0x1f8]
mov dword [ebp - 0x94], eax
mov eax, 1
mov dword [ebp - 0x90], edx
xor edx, edx
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x94]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp], edi
call sym._gdip_transform_points
mov eax, dword [ebp - 0x1c8]
lea ecx, [ebp - 0x9c]
mov edx, dword [ebp - 0x1c0]
mov dword [esp + 4], eax
lea eax, [ebp - 0x74]
mov dword [esp], eax
mov eax, edi
call sym._get_font_hfont.isra.0
cmp byte [ebp - 0x1d8], 0
jne 0x6902cfb3
movss xmm1, dword [0x6907fb54]
movsd xmm2, qword [0x6907fb58]
movq xmm5, qword [0x6907fb60]
movss dword [ebp - 0x1c0], xmm1
mov eax, dword [ebp - 0x9c]
movupd xmmword [ebp - 0x1e8], xmm5
mov esi, dword [ebp - 0x1f8]
movsd qword [ebp - 0x1c8], xmm2
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SelectObject]
mov eax, 0x18
sub esp, 8
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SetTextAlign]
sub esp, 8
mov dword [esp], esi
call sym._gdi_transform_acquire
movupd xmm5, xmmword [ebp - 0x1e8]
movsd xmm2, qword [ebp - 0x1c8]
movss xmm1, dword [ebp - 0x1c0]
movupd xmm4, xmm5
movss xmm3, dword [ebp - 0x90]
addss xmm3, xmm1
cvtss2sd xmm3, xmm3
movupd xmm0, xmm3
andpd xmm0, xmm5
ucomisd xmm2, xmm0
jbe 0x6902c5cd
andnpd xmm4, xmm3
addsd xmm0, xmm2
subsd xmm0, xmm2
orpd xmm0, xmm4
movupd xmm4, xmm0
cmpnlesd xmm4, xmm3
movupd xmm3, xmm4
movsd xmm4, qword [0x6907fb48]
andpd xmm3, xmm4
subsd xmm0, xmm3
movupd xmm3, xmm0
addss xmm1, dword [ebp - 0x94]
pxor xmm0, xmm0
cvtss2sd xmm0, xmm1
movupd xmm1, xmm0
andpd xmm1, xmm5
ucomisd xmm2, xmm1
jbe 0x6902c61c
andnpd xmm5, xmm0
addsd xmm1, xmm2
subsd xmm1, xmm2
movsd xmm2, qword [0x6907fb48]
orpd xmm1, xmm5
movupd xmm5, xmm1
cmpnlesd xmm5, xmm0
movupd xmm0, xmm5
andpd xmm0, xmm2
subsd xmm1, xmm0
movupd xmm0, xmm1
mov eax, dword [ebp - 0x1bc]
cvtsd2ss xmm3, xmm3
cvtsd2ss xmm0, xmm0
mov edi, dword [ebp - 0x1d0]
xor edx, edx
mov dword [esp + 0x10], edx
mov esi, dword [ebp - 0x1f8]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0x1cc]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x1d4]
mov dword [esp + 0xc], eax
cvttss2si eax, xmm3
mov dword [esp + 8], eax
cvttss2si eax, xmm0
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_ExtTextOutW]
sub esp, 0x20
mov dword [esp], esi
call sym._gdi_transform_release
mov eax, dword [ebp - 0x1ec]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov esi, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_RestoreDC]
mov eax, dword [ebp - 0x9c]
sub esp, 8
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteObject]
xor ecx, ecx
sub esp, 4
mov dword [esp + 8], ebx
mov ebx, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 4], ecx
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
sub esp, 0xc
mov dword [esp + 8], edi
xor edi, edi
mov dword [esp + 4], edi
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
sub esp, 0xc
jmp 0x6902c82c
test byte [0x6907a0c8], 1
je 0x6902bde8
mov dword [esp + 0x10], eax
mov eax, str.Ignoring_flags__x_n
mov dword [esp + 0xc], eax
mov eax, str.SOFTWARE_GdipDrawDriverString
mov dword [esp + 8], eax
mov eax, 0x6907a0c8
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_4
jmp 0x6902bde8
mov dword [esp + 8], edx
mov ecx, 8
mov dword [esp + 4], ecx
mov dword [ebp - 0x1b8], edx
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x224]
call eax
mov edx, dword [ebp - 0x1b8]
sub esp, 0xc
test eax, eax
mov ebx, eax
je 0x6902d331
cmp edx, 8
mov ecx, edx
mov edi, eax
jae 0x6902c900
rep movsb byte es:[edi], byte [esi]
mov eax, 4
xor edi, edi
mov dword [esp + 4], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edi
mov esi, dword [ebp - 0x1bc]
mov eax, dword [ebp - 0x1f8]
mov dword [esp + 0x10], esi
mov dword [esp], eax
call sym._gdip_transform_points
mov eax, dword [ebp - 0x214]
mov ecx, esi
mov edx, ebx
call sym._round_points
xor edx, edx
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
mov eax, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [ebp - 0x228], eax
call eax
sub esp, 0xc
jmp 0x6902bea9
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x1c0]
mov dword [esp + 0x1c], ebx
mov edi, dword [ebp - 0x1c8]
mov dword [esp + 0x18], esi
mov ebx, dword [ebp - 0x21c]
mov dword [esp], edx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x1bc]
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x1cc]
mov dword [esp + 4], eax
call sym._METAFILE_DrawDriverString
mov dword [ebp - 0x1b8], eax
mov eax, dword [ebp - 0x1b8]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
cmp dword [ebp - 0x1bc], esi
jg 0x6902bf5d
jmp 0x6902c02e
cmp word [edx], 0
mov ecx, edx
je 0x6902ce70
lea esi, [esi]
lea esi, [esi]
nop
add ecx, 2
cmp word [ecx], 0
jne 0x6902c870
mov edi, dword [ebp - 0x1cc]
sub ecx, edi
sar ecx, 1
mov dword [ebp - 0x1bc], ecx
jmp 0x6902bd83
test byte [0x6907a0c8], 2
jne 0x6902c990
mov ebx, dword [ebp - 0x214]
xor edx, edx
mov dword [esp + 4], edx
mov eax, dword fs:[0x18]
mov dword [esp + 8], ebx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x228]
call eax
mov eax, dword [ebp - 0x1ec]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
mov eax, dword [ebp - 0x98]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteObject]
mov ecx, 1
mov dword [ebp - 0x1b8], ecx
sub esp, 4
jmp 0x6902c82c
test al, 1
jne 0x6902cedc
test edi, 2
jne 0x6902cec7
test edi, 4
je 0x6902c774
mov eax, dword [esi]
add edi, 4
add esi, 4
sub ecx, 4
mov dword [edi - 4], eax
jmp 0x6902c774
mov ebx, dword [ebp - 0x214]
xor ecx, ecx
mov dword [esp + 4], ecx
mov eax, dword fs:[0x18]
mov dword [esp + 8], ebx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x228]
call eax
mov eax, dword [ebp - 0x1ec]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
mov eax, dword [ebp - 0x98]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteObject]
sub esp, 4
jmp 0x6902c82c
mov ebx, str.GetGlyphOutlineW_failed_n
mov esi, str.SOFTWARE_GdipDrawDriverString
mov dword [esp + 0xc], ebx
mov edi, 0x6907a0c8
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_4
jmp 0x6902c89d
xor eax, eax
mov dword [ebp - 0x1b8], eax
jmp 0x6902c82c
mov eax, dword [ebp - 0x214]
xor esi, esi
xor edi, edi
mov dword [esp + 4], esi
mov esi, dword [ebp - 0x228]
mov ebx, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x1ec]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
mov eax, dword [ebp - 0x98]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteObject]
mov eax, dword [ebp - 0x210]
sub esp, 4
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x234]
shl eax, 2
sub esp, 0xc
mov dword [esp + 8], eax
mov eax, 8
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x224]
call eax
mov dword [ebp - 0x200], eax
sub esp, 0xc
test eax, eax
je 0x6902d364
mov eax, dword [ebp - 0x1d0]
mov esi, dword [ebp - 0x230]
mov ecx, dword [ebp - 0x200]
mov edx, dword [ebp - 0x21c]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x1d4]
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x1f0]
mov dword [ebp - 0x84], eax
lea esi, [eax*4]
mov dword [esp + 4], eax
lea eax, [ebp - 0x8c]
mov dword [esp], eax
mov eax, dword [ebp - 0x1f8]
mov dword [ebp - 0x1cc], esi
call sym._brush_fill_pixels
mov dword [ebp - 0x1b8], eax
test eax, eax
jne 0x6902ce80
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x1e8], eax
test eax, eax
jle 0x6902cda6
mov eax, dword [ebp - 0x84]
movdqu xmm1, xmmword [0x6907fcb0]
pxor xmm3, xmm3
mov ebx, dword [ebp - 0x200]
mov ecx, dword [ebp - 0x22c]
mov dword [ebp - 0x1c0], eax
dec eax
mov dword [ebp - 0x1d8], eax
add ebx, 3
mov dword [ebp - 0x1bc], ebx
mov ebx, eax
and ebx, 0xfffffff0
mov dword [ebp - 0x1fc], ebx
mov eax, ebx
mov dword [ebp - 0x1f4], ebx
shl eax, 2
mov dword [ebp - 0x1ec], eax
xor eax, eax
mov dword [ebp - 0x1c8], eax
lea esi, [esi]
mov edi, dword [ebp - 0x1c0]
mov ebx, ecx
mov edx, dword [ebp - 0x1bc]
test edi, edi
jle 0x6902cd7a
cmp dword [ebp - 0x1d8], 0xf
jbe 0x6902ce60
mov eax, dword [ebp - 0x1fc]
mov esi, ecx
lea edi, [ecx + eax]
mov eax, dword [ebp - 0x1bc]
mov ebx, eax
lea esi, [esi]
lea esi, [esi]
movdqu xmm0, xmmword [ebx]
movdqu xmm2, xmmword [ebx + 0x10]
movdqu xmm4, xmmword [ebx + 0x30]
pand xmm2, xmm1
pand xmm4, xmm1
pand xmm0, xmm1
packuswb xmm0, xmm2
movdqu xmm2, xmmword [ebx + 0x20]
pand xmm0, xmm1
pand xmm2, xmm1
packuswb xmm2, xmm4
movdqu xmm4, xmmword [esi]
pand xmm2, xmm1
movdqu xmm5, xmm4
packuswb xmm0, xmm2
punpcklbw xmm5, xmm3
movdqu xmm2, xmm0
punpckhbw xmm4, xmm3
punpcklbw xmm2, xmm3
punpckhbw xmm0, xmm3
pmullw xmm2, xmm5
pmullw xmm0, xmm4
psrlw xmm2, 6
psrlw xmm0, 6
pand xmm2, xmm1
movdqu xmm7, xmm2
pand xmm0, xmm1
packuswb xmm7, xmm0
movdqu xmmword [ebp - 0x1b8], xmm7
movzx edx, byte [ebp - 0x1b8]
movdqu xmmword [ebp - 0xb8], xmm7
add esi, 0x10
add eax, 0x40
add ebx, 0x40
mov byte [eax - 0x40], dl
movdqu xmmword [ebp - 0xc8], xmm7
movzx edx, byte [ebp - 0xc7]
mov byte [eax - 0x3c], dl
movdqu xmmword [ebp - 0xd8], xmm7
movzx edx, byte [ebp - 0xd6]
mov byte [eax - 0x38], dl
movdqu xmmword [ebp - 0xe8], xmm7
movzx edx, byte [ebp - 0xe5]
mov byte [eax - 0x34], dl
movdqu xmmword [ebp - 0xf8], xmm7
movzx edx, byte [ebp - 0xf4]
mov byte [eax - 0x30], dl
movdqu xmmword [ebp - 0x108], xmm7
movzx edx, byte [ebp - 0x103]
mov byte [eax - 0x2c], dl
movdqu xmmword [ebp - 0x118], xmm7
movzx edx, byte [ebp - 0x112]
mov byte [eax - 0x28], dl
movdqu xmmword [ebp - 0x128], xmm7
movzx edx, byte [ebp - 0x121]
mov byte [eax - 0x24], dl
movdqu xmmword [ebp - 0x138], xmm7
movzx edx, byte [ebp - 0x130]
mov byte [eax - 0x20], dl
movdqu xmmword [ebp - 0x148], xmm7
movzx edx, byte [ebp - 0x13f]
mov byte [eax - 0x1c], dl
movdqu xmmword [ebp - 0x158], xmm7
movzx edx, byte [ebp - 0x14e]
mov byte [eax - 0x18], dl
movdqu xmmword [ebp - 0x168], xmm7
movzx edx, byte [ebp - 0x15d]
mov byte [eax - 0x14], dl
movdqu xmmword [ebp - 0x178], xmm7
movzx edx, byte [ebp - 0x16c]
mov byte [eax - 0x10], dl
movdqu xmmword [ebp - 0x188], xmm7
movzx edx, byte [ebp - 0x17b]
mov byte [eax - 0xc], dl
movdqu xmmword [ebp - 0x198], xmm7
movzx edx, byte [ebp - 0x18a]
mov byte [eax - 8], dl
movdqu xmmword [ebp - 0x1a8], xmm7
movzx edx, byte [ebp - 0x199]
mov byte [eax - 4], dl
cmp esi, edi
jne 0x6902cb90
mov ebx, dword [ebp - 0x1ec]
mov edx, dword [ebp - 0x1bc]
mov eax, dword [ebp - 0x1f4]
add edx, ebx
lea ebx, [ecx + eax]
mov esi, eax
sub ebx, eax
neg esi
lea esi, [edx + esi*4]
nop
movzx edi, byte [esi + eax*4]
movzx edx, byte [ebx + eax]
imul edx, edi
sar edx, 6
mov byte [esi + eax*4], dl
inc eax
cmp dword [ebp - 0x1c0], eax
jg 0x6902cd60
inc dword [ebp - 0x1c8]
mov esi, dword [ebp - 0x1f0]
mov ebx, dword [ebp - 0x1cc]
mov eax, dword [ebp - 0x1c8]
add dword [ebp - 0x1bc], ebx
add ecx, esi
cmp eax, dword [ebp - 0x1e8]
jne 0x6902cb50
mov eax, dword [ebp - 0x22c]
mov ebx, dword fs:[0x18]
mov edi, dword [ebp - 0x228]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov esi, dword [ebp - 0x1f8]
sub esp, 0xc
mov dword [esp], esi
call sym._gdi_transform_acquire
mov eax, 0x26200a
xor edx, edx
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x1cc]
mov dword [esp + 0x10], edx
mov ecx, dword [ebp - 0x1d4]
mov edx, dword [ebp - 0x1d0]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x80]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x84]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x200]
mov dword [esp], eax
mov eax, esi
call sym._alpha_blend_pixels_hrgn
mov dword [esp], esi
mov dword [ebp - 0x1b8], eax
call sym._gdi_transform_release
mov eax, dword [ebp - 0x200]
xor ecx, ecx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
jmp 0x6902c82c
xor eax, eax
jmp 0x6902cd55
xor edx, edx
mov dword [ebp - 0x1bc], edx
jmp 0x6902bd83
mov eax, dword [ebp - 0x22c]
mov esi, dword [ebp - 0x228]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x200]
sub esp, 0xc
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
sub esp, 0xc
jmp 0x6902c82c
movzx eax, word [esi]
add edi, 2
add esi, 2
sub ecx, 2
mov word [edi - 2], ax
jmp 0x6902c914
movzx eax, byte [esi]
lea edi, [ebx + 1]
inc esi
dec ecx
mov byte [ebx], al
jmp 0x6902c908
mov eax, dword [ebp - 0x98]
mov edi, 5
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1f8]
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_ExtSelectClipRgn]
mov eax, dword [ebp - 0x98]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteObject]
sub esp, 4
jmp 0x6902c484
mov eax, dword [ebp - 0x1bc]
mov edx, dword fs:[0x18]
mov dword [ebp - 0x1d0], edx
mov edi, dword [sym.imp.kernel32.dll_HeapAlloc]
lea ecx, [eax*8]
mov dword [esp + 8], ecx
mov dword [ebp - 0x1ec], ecx
xor ecx, ecx
mov dword [esp + 4], ecx
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov ecx, dword [ebp - 0x1ec]
mov edx, dword [ebp - 0x1d0]
sub esp, 0xc
mov ebx, eax
lea eax, [ecx - 8]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov dword [ebp - 0x1d0], eax
sub esp, 0xc
test ebx, ebx
je 0x6902d399
test eax, eax
je 0x6902d399
mov eax, dword [ebp - 0x1f8]
mov eax, dword [eax]
jmp 0x6902c423
mov eax, dword [ebp - 0x1bc]
mov edi, ebx
or dword [ebp - 0x1d4], 0x2000
lea ecx, [eax*8]
cmp ecx, 8
jae 0x6902d23c
rep movsb byte es:[edi], byte [esi]
lea esi, [ebp - 0x8c]
xor eax, eax
mov dword [esp + 8], eax
mov eax, 4
mov dword [esp + 4], eax
mov dword [esp + 0xc], ebx
mov edi, dword [ebp - 0x1bc]
mov eax, dword [ebp - 0x1f8]
mov dword [esp + 0x10], edi
mov dword [esp], eax
call sym._gdip_transform_points
movss xmm0, dword [0x6907fba0]
mov dword [esp], esi
mov dword [esp + 0x18], 0
movss dword [esp + 0x10], xmm0
movss dword [esp + 4], xmm0
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
call sym.gdiplus.dll_GdipSetMatrixElements
pxor xmm0, xmm0
cvtsi2sd xmm0, dword [ebp - 0x6c]
divsd xmm0, qword [0x6907fc90]
cvtsd2ss xmm0, xmm0
mov eax, 1
sub esp, 0x1c
movss dword [esp + 4], xmm0
mov dword [esp], esi
mov dword [esp + 8], eax
call sym.gdiplus.dll_GdipRotateMatrix
sub esp, 0xc
mov dword [esp], esi
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
call sym.gdiplus.dll_GdipTransformMatrixPoints
mov esi, dword [ebp - 0x1d0]
lea edx, [edi - 1]
mov ecx, dword [ebp - 0x1e8]
movq xmm5, qword [0x6907fb60]
movsd xmm2, qword [0x6907fb58]
movss xmm1, dword [0x6907fb54]
movupd xmm4, xmm5
sub esp, 0xc
lea esi, [esi]
lea esi, [esi]
nop
movss xmm0, dword [ebx + ecx*8 + 8]
addss xmm0, xmm1
cvtss2sd xmm0, xmm0
movupd xmm3, xmm0
andpd xmm3, xmm4
ucomisd xmm2, xmm3
jbe 0x6902d111
addsd xmm3, xmm2
movupd xmm6, xmm4
subsd xmm3, xmm2
andnpd xmm6, xmm0
orpd xmm3, xmm6
movupd xmm7, xmm3
cmpnlesd xmm7, xmm0
movupd xmm0, xmm7
movsd xmm7, qword [0x6907fb48]
andpd xmm0, xmm7
subsd xmm3, xmm0
movupd xmm0, xmm3
movss xmm3, dword [ebx + ecx*8]
addss xmm3, xmm1
cvtss2sd xmm3, xmm3
movupd xmm6, xmm3
andpd xmm6, xmm4
ucomisd xmm2, xmm6
jbe 0x6902d161
addsd xmm6, xmm2
movupd xmm7, xmm4
subsd xmm6, xmm2
andnpd xmm7, xmm3
orpd xmm6, xmm7
movupd xmm7, xmm6
cmpnlesd xmm7, xmm3
movupd xmm3, xmm7
movsd xmm7, qword [0x6907fb48]
andpd xmm3, xmm7
subsd xmm6, xmm3
movupd xmm3, xmm6
cvtsd2ss xmm0, xmm0
cvttss2si eax, xmm0
cvtsd2ss xmm3, xmm3
movss xmm0, dword [ebx + ecx*8 + 4]
cvttss2si edi, xmm3
addss xmm0, xmm1
sub eax, edi
cvtss2sd xmm0, xmm0
mov dword [esi + ecx*8], eax
movupd xmm3, xmm0
andpd xmm3, xmm4
ucomisd xmm2, xmm3
jbe 0x6902d1c7
addsd xmm3, xmm2
movupd xmm6, xmm4
subsd xmm3, xmm2
andnpd xmm6, xmm0
orpd xmm3, xmm6
movupd xmm7, xmm3
cmpnlesd xmm7, xmm0
movupd xmm0, xmm7
movsd xmm7, qword [0x6907fb48]
andpd xmm0, xmm7
subsd xmm3, xmm0
movupd xmm0, xmm3
movss xmm3, dword [ebx + ecx*8 + 0xc]
addss xmm3, xmm1
cvtss2sd xmm3, xmm3
movupd xmm6, xmm3
andpd xmm6, xmm4
ucomisd xmm2, xmm6
jbe 0x6902d218
addsd xmm6, xmm2
movupd xmm7, xmm4
subsd xmm6, xmm2
andnpd xmm7, xmm3
orpd xmm6, xmm7
movupd xmm7, xmm6
cmpnlesd xmm7, xmm3
movupd xmm3, xmm7
movsd xmm7, qword [0x6907fb48]
andpd xmm3, xmm7
subsd xmm6, xmm3
movupd xmm3, xmm6
cvtsd2ss xmm0, xmm0
cvtsd2ss xmm3, xmm3
cvttss2si eax, xmm0
cvttss2si edi, xmm3
sub eax, edi
mov dword [esi + ecx*8 + 4], eax
inc ecx
cmp edx, ecx
jg 0x6902d0c0
jmp 0x6902c50d
test bl, 1
jne 0x6902d289
test edi, 2
jne 0x6902d277
test edi, 4
je 0x6902cfd5
mov eax, dword [esi]
add edi, 4
add esi, 4
sub ecx, 4
mov dword [edi - 4], eax
jmp 0x6902cfd5
mov dword [ebp - 0x1b8], 3
jmp 0x6902c82c
movzx eax, word [esi]
add edi, 2
add esi, 2
sub ecx, 2
mov word [edi - 2], ax
jmp 0x6902d249
movzx eax, byte [esi]
lea edi, [ebx + 1]
inc esi
dec ecx
mov byte [ebx], al
jmp 0x6902d241
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x210]
mov ebx, dword fs:[0x18]
mov esi, dword [ebp - 0x228]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x22c]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x214]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x1ec]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
mov eax, dword [ebp - 0x98]
push edi
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteObject]
mov dword [ebp - 0x1b8], 3
push eax
jmp 0x6902c82c
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x214]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [ebp - 0x1b8], 3
sub esp, 0xc
jmp 0x6902c82c
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x22c]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x228]
call eax
mov dword [ebp - 0x1b8], 3
sub esp, 0xc
jmp 0x6902c82c
mov dword [esp + 8], ebx
mov ebx, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 4], 0
mov esi, dword fs:[0x18]
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x1d0]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov dword [ebp - 0x1b8], 3
sub esp, 0xc
jmp 0x6902c82c