Function at 0x64a4e390
Capabilities:
Access peb ldr_data
Get kernel32 base address
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, 0x48
fld dword [ecx]
mov esi, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
fst dword [ebp - 0x20]
fld dword [ecx + 4]
fst dword [ebp - 0x1c]
test byte [0x64ab5028], 8
jne 0x64a4e608
fstp st(0)
fstp st(0)
test edi, edi
je 0x64a4e644
mov dword [esp + 8], 0x30
mov edx, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov dword [ebp - 0x24], edx
call edx
mov edx, dword [ebp - 0x24]
sub esp, 0xc
test eax, eax
mov dword [edi], eax
mov ebx, eax
je 0x64a4e5f9
fldz
fld dword [ebp - 0x1c]
fucompi st(1)
jp 0x64a4e55e
jne 0x64a4e568
mov dword [ebx + 0x10], esi
fstp dword [ebp - 0x28]
mov esi, dword fs:[0x18]
mov dword [esp + 8], 0x20
mov dword [esp + 4], 8
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov dword [ebp - 0x24], edx
call edx
sub esp, 0xc
mov dword [ebx + 8], eax
mov dword [esp + 8], 4
mov dword [esp + 4], 8
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov edx, dword [ebp - 0x24]
call edx
fld dword [ebp - 0x28]
sub esp, 0xc
test eax, eax
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
je 0x64a4e578
test eax, eax
je 0x64a4e580
mov dword [ebx + 4], 4
fstp dword [ebx + 0x18]
fld dword [ebp - 0x20]
mov dword [ebx + 0x14], 3
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x20], 0x3f800000
mov eax, dword [edi]
mov dword [eax], 1
mov eax, dword [edi]
fstp dword [eax + 0x28]
fld dword [ebp - 0x1c]
mov eax, dword [edi]
fstp dword [eax + 0x2c]
mov eax, dword [edi]
mov dword [eax + 0x24], 0
mov ebx, dword [edi]
mov eax, dword [ebx + 4]
sub eax, 3
cmp eax, 1
ja 0x64a4e6c8
mov esi, dword [ebx + 0x10]
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
test esi, esi
je 0x64a4e670
mov dword [edx], 0x81010100
fld dword [ebx + 0x2c]
mov dword [ebx + 4], 4
fchs
fld dword [0x64ab85a0]
fmul st(1), st(0)
fxch st(1)
fstp dword [eax]
fld dword [ebx + 0x28]
fchs
fstp dword [eax + 4]
fldz
fst dword [eax + 8]
fst dword [eax + 0xc]
fxch st(1)
fmul dword [ebx + 0x2c]
fstp dword [eax + 0x10]
fld dword [ebx + 0x28]
fchs
fstp dword [eax + 0x14]
fstp dword [eax + 0x18]
fld dword [ebx + 0x28]
fchs
fsub dword [ebx + 0x24]
fstp dword [eax + 0x1c]
fldz
fld dword [ebx + 0x2c]
fucomi st(1)
jp 0x64a4e657
jne 0x64a4e660
fstp st(0)
fstp dword [ebx + 0x18]
xor eax, eax
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
fstp st(0)
jmp 0x64a4e56a
fstp st(0)
fld dword [ebp - 0x20]
fdiv dword [ebp - 0x1c]
jmp 0x64a4e41d
fstp st(0)
jmp 0x64a4e582
fstp st(0)
mov dword [esp + 8], eax
mov esi, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 4], 0
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov dword [ebp - 0x1c], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebx + 0xc]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], 0
mov eax, dword [edi]
sub esp, 0xc
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
sub esp, 0xc
mov eax, 3
jmp 0x64a4e550
fstp qword [esp + 0x18]
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], esi
fstp qword [esp + 0x10]
mov dword [esp + 0xc], str.__0.2f__0.2f__i__p__n
mov dword [esp + 8], str.GdipCreateAdjustableArrowCap
mov dword [esp + 4], 0x64ab5028
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
test edi, edi
jne 0x64a4e3ce
lea esp, [ebp - 0x10]
mov eax, 2
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
fstp st(1)
jmp 0x64a4e662
fstp st(1)
fdivr dword [ebx + 0x28]
fstp dword [ebx + 0x18]
jmp 0x64a4e54e
mov ecx, 0x100
mov byte [edx + 2], 1
mov word [edx], cx
fld dword [ebx + 0x2c]
mov dword [ebx + 4], 3
fchs
fld dword [0x64ab85a4]
fmul st(1), st(0)
fxch st(1)
fstp dword [eax]
fld dword [ebx + 0x28]
fchs
fld dword [0x64ab85a0]
fmul st(1), st(0)
fxch st(1)
fstp dword [eax + 4]
fldz
fst dword [eax + 8]
fstp dword [eax + 0xc]
fxch st(1)
fmul dword [ebx + 0x2c]
fstp dword [eax + 0x10]
fld dword [ebx + 0x28]
fchs
fmulp st(1)
fstp dword [eax + 0x14]
jmp 0x64a4e536
mov dword [esp + 8], 0x127
mov dword [esp + 4], str._Users_runner_work_wine_wine_dlls_gdiplus_customlinecap.c
mov dword [esp], str.cap__cap.pathdata.Count__3__cap__cap.pathdata.Count__4
call dword [sym.imp.ucrtbase.dll__assert]
jmp 0x64a4e4d9