Function at 0x69030420
Capabilities:
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, 0x7c
mov dword [ebp - 0x30], eax
mov eax, dword [edi]
movss dword [ebp - 0x50], xmm0
mov ebx, dword [edi + 8]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x40], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x44], eax
mov eax, dword [eax + 0x28]
cmp eax, 4
je 0x690308fc
ja 0x690304c8
cmp eax, 2
je 0x690306b8
cmp eax, 3
lea esi, [esi]
jne 0x690306d0
mov dword [ebp - 0x3c], 4
mov eax, 0x10
mov ebx, 0x690801c0
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x1c], eax
call eax
sub esp, 0xc
test eax, eax
mov edi, eax
jne 0x69030720
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
cmp eax, 5
jne 0x690306d0
mov eax, dword [ebp - 0x44]
xor edi, edi
mov esi, dword [eax + 0x30]
mov ebx, dword [eax + 0x2c]
mov dword [esp + 4], edi
mov eax, dword fs:[0x18]
mov dword [ebp - 0x3c], esi
lea edx, [esi*4]
mov dword [esp + 8], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x1c], eax
call eax
sub esp, 0xc
test eax, eax
mov edi, eax
je 0x690304b8
test esi, esi
jg 0x6903093e
lea esi, [esi]
nop
mov eax, dword [ebp - 0x4c]
mov ecx, 8
mov dword [esp + 4], ecx
mov edx, dword [ebp - 0x24]
mov ebx, dword fs:[0x18]
sub eax, edx
lea eax, [eax*8 + 0x10]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x1c]
call eax
mov dword [ebp - 0x2c], eax
sub esp, 0xc
test eax, eax
je 0x69030a16
mov esi, dword [ebp - 0x40]
mov eax, 1
sub eax, esi
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x4c]
cmp eax, esi
jl 0x690308b0
mov dword [ebp - 0x28], edi
inc eax
xor ebx, ebx
pxor xmm6, xmm6
mov dword [ebp - 0x38], eax
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x1c], 0
movups xmm4, xmm6
mov dword [ebp - 0x20], ebx
jmp 0x6903069a
mov ebx, dword [edi]
lea ecx, [esi*8]
pxor xmm5, xmm5
mov dword [ebp - 0x34], ecx
lea edx, [eax*8]
mov dword [ebp - 0x30], edx
add ecx, ebx
movss xmm1, dword [ecx + 4]
movss xmm2, dword [ecx]
subss xmm1, dword [ebx + eax*8 + 4]
subss xmm2, dword [ebx + eax*8]
movups xmm0, xmm1
movups xmm3, xmm2
mulss xmm3, xmm2
mulss xmm0, xmm1
addss xmm0, xmm3
cvtss2sd xmm0, xmm0
movupd xmm3, xmm0
ucomisd xmm5, xmm0
sqrtsd xmm3, xmm3
ja 0x690309d8
movups xmm5, xmm6
mov ebx, dword [ebp - 0x20]
cvtsd2ss xmm3, xmm3
ucomiss xmm4, xmm6
jp 0x6903064b
jne 0x6903064b
test bl, 1
jne 0x69030770
movups xmm0, xmm2
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x1c], 1
mov ecx, dword [edi]
mulss xmm0, xmm5
mov edx, dword [ebp - 0x2c]
add eax, ecx
divss xmm0, xmm3
addss xmm0, dword [eax]
movss dword [edx], xmm0
movups xmm0, xmm1
mulss xmm0, xmm5
divss xmm0, xmm3
addss xmm0, dword [eax + 4]
movss dword [edx + 4], xmm0
movups xmm7, xmm3
mov eax, dword [ebp - 0x28]
subss xmm7, xmm5
movss xmm0, dword [eax + ebx*4]
subss xmm0, xmm4
comiss xmm0, xmm7
jbe 0x69030750
mov dword [ebp - 0x20], ebx
test bl, 1
jne 0x6903068c
mov eax, dword [edi]
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x2c]
add edx, eax
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [ebx + ecx*8], eax
mov dword [ebx + ecx*8 + 4], edx
inc ecx
mov dword [ebp - 0x1c], ecx
addss xmm4, xmm7
inc esi
cmp dword [ebp - 0x38], esi
je 0x69030848
cmp dword [ebp - 0x24], esi
lea eax, [esi - 1]
jne 0x690305a0
mov ebx, dword [ebp - 0x40]
test ebx, ebx
je 0x69030690
mov eax, dword [ebp - 0x4c]
jmp 0x690305a0
mov dword [ebp - 0x3c], 2
mov eax, 8
mov ebx, 0x690801c8
jmp 0x69030487
xor ecx, ecx
mov edx, 8
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
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_HeapAlloc]
mov dword [ebp - 0x1c], eax
call eax
sub esp, 0xc
test eax, eax
mov edi, eax
je 0x690304b8
mov dword [ebp - 0x3c], 2
mov eax, dword [ebp - 0x44]
mov ebx, 0x690801c0
movss xmm1, dword [eax + 8]
jmp 0x69030728
mov eax, dword [ebp - 0x44]
movss xmm1, dword [eax + 8]
mov edx, dword [ebp - 0x3c]
xor eax, eax
lea esi, [esi]
movss xmm0, dword [ebx + eax*4]
mulss xmm0, xmm1
movss dword [edi + eax*4], xmm0
inc eax
cmp eax, edx
jl 0x69030730
jmp 0x69030520
inc ebx
mov eax, 0
cmp ebx, dword [ebp - 0x3c]
addss xmm5, xmm0
movups xmm4, xmm6
cmove ebx, eax
jmp 0x69030602
movups xmm0, xmm2
mov ecx, dword [edi]
mov edx, dword [ebp - 0x30]
mulss xmm0, xmm5
mov eax, dword [ebp - 0x2c]
add edx, ecx
mov ecx, dword [ebp - 0x1c]
divss xmm0, xmm3
addss xmm0, dword [edx]
lea eax, [eax + ecx*8]
movss dword [eax], xmm0
movups xmm0, xmm1
mulss xmm0, xmm5
divss xmm0, xmm3
addss xmm0, dword [edx + 4]
mov edx, dword [ebp - 0x48]
movss dword [eax + 4], xmm0
xor eax, eax
test edx, edx
je 0x690307b7
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x48], 0
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
je 0x6903064b
movss dword [ebp - 0x60], xmm4
mov edx, dword [ebp - 0x54]
movss xmm0, dword [ebp - 0x50]
movss dword [ebp - 0x68], xmm5
movss dword [ebp - 0x5c], xmm3
mov dword [esp + 0x14], edx
xor edx, edx
mov dword [esp + 0x10], edx
xor edx, edx
mov dword [esp + 0xc], edx
mov edx, dword [ebp - 0x44]
movss dword [ebp - 0x58], xmm2
movss dword [ebp - 0x20], xmm1
mov edx, dword [edx + 0x18]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 8], edx
mov edx, dword [ebp - 0x44]
mov dword [esp], edx
xor edx, edx
call sym._widen_open_figure.part.0
pxor xmm6, xmm6
movss xmm4, dword [ebp - 0x60]
movss xmm5, dword [ebp - 0x68]
movss xmm3, dword [ebp - 0x5c]
movss xmm2, dword [ebp - 0x58]
movss xmm1, dword [ebp - 0x20]
mov dword [ebp - 0x1c], 0
jmp 0x6903064b
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x28]
test esi, esi
je 0x690308b0
test bl, 1
jne 0x690308b0
mov ebx, dword [ebp - 0x40]
xor edx, edx
test ebx, ebx
jne 0x69030869
mov eax, dword [ebp - 0x44]
mov edx, dword [eax + 0xc]
mov ecx, dword [ebp - 0x48]
xor eax, eax
test ecx, ecx
je 0x69030878
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + 0x10]
mov ecx, dword [ebp - 0x1c]
dec ecx
je 0x690308b0
mov ebx, dword [ebp - 0x54]
mov esi, dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x50]
mov dword [esp + 0x14], ebx
mov ebx, dword [esi + 0x1c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
mov edx, dword [esi + 0x18]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp], esi
mov dword [esp + 8], edx
xor edx, edx
call sym._widen_open_figure.part.0
mov dword [esp + 8], edi
xor ebx, ebx
xor edi, edi
mov dword [esp + 4], ebx
mov ebx, dword [sym.imp.kernel32.dll_HeapFree]
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 - 0x2c]
sub esp, 0xc
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
mov dword [esp + 8], 0x18
mov dword [esp + 4], 0
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_HeapAlloc]
mov dword [ebp - 0x1c], eax
call eax
sub esp, 0xc
test eax, eax
mov edi, eax
je 0x690304b8
mov dword [ebp - 0x3c], 6
mov ebx, 0x690801c0
mov eax, dword [ebp - 0x44]
movss xmm1, dword [eax + 8]
lea eax, [ebx + 0xf]
sub eax, edi
cmp eax, 0x1e
jbe 0x69030728
mov edx, dword [ebp - 0x3c]
cmp edx, 5
jle 0x69030728
test edx, edx
mov eax, 1
movups xmm2, xmm1
cmovg eax, edx
mov esi, eax
mov ecx, esi
shufps xmm2, xmm2, 0
shr ecx, 2
mov eax, edi
shl ecx, 4
mov edx, ebx
add ecx, edi
lea esi, [esi]
lea esi, [esi]
nop
movq xmm0, qword [edx]
movhps xmm0, qword [edx + 8]
mulps xmm0, xmm2
add eax, 0x10
add edx, 0x10
movlps qword [eax - 0x10], xmm0
movhps qword [eax - 8], xmm0
cmp ecx, eax
jne 0x69030990
mov eax, esi
and eax, 0xfffffffc
and esi, 3
je 0x69030520
mov edx, dword [ebp - 0x3c]
nop
movss xmm0, dword [ebx + eax*4]
mulss xmm0, xmm1
movss dword [edi + eax*4], xmm0
inc eax
cmp eax, edx
jl 0x690309c0
jmp 0x69030520
movss dword [ebp - 0x60], xmm4
movsd qword [ebp - 0x68], xmm3
movsd qword [esp], xmm0
movss dword [ebp - 0x5c], xmm2
movss dword [ebp - 0x58], xmm1
call dword [sym.imp.ucrtbase.dll_sqrt]
fstp st(0)
pxor xmm6, xmm6
movsd xmm3, qword [ebp - 0x68]
movss xmm4, dword [ebp - 0x60]
movss xmm2, dword [ebp - 0x5c]
movss xmm1, dword [ebp - 0x58]
jmp 0x690305f8
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
jmp 0x690304b8