Function at 0x537d30
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
mov eax, dword [0x5f3008]
xor eax, esp
mov dword [esp + 0xc4], eax
mov eax, dword [ebp + 8]
push esi
push edi
mov edi, dword [0x6167e8]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 0xc]
movsd qword [esp + 0x30], xmm3
push dword [edi + 0xcc]
mov dword [esp + 0x98], edi
movups xmm0, xmmword [eax]
mov ax, word [ebp + 0x18]
push dword [edi]
mov dword [esp + 0x20], 0
movups xmmword [edi + 0x38], xmm0
mov word [edi + 0x58], ax
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [edi + 0xd4]
push dword [edi]
call dword [sym.imp.GDI32.dll_SetBkColor]
push dword [edi + 0xdc]
push dword [edi]
call dword [sym.imp.GDI32.dll_SetTextColor]
lea eax, [esp + 0xb0]
push eax
push 2
push 0x5e88ec
push dword [edi]
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
movsd xmm3, qword [edi + 0x48]
movsd xmm4, qword [edi + 0x50]
movaps xmm0, xmm3
mulsd xmm0, qword [0x5ea5b8]
mov dword [edi + 0xb8], 0
mov dword [edi + 0xc0], 0
cvttsd2si eax, xmm0
movaps xmm0, xmm4
mulsd xmm0, qword [0x5ea5b8]
mov dword [edi + 0x90], eax
mov dword [edi + 0x94], eax
cvttsd2si ecx, xmm0
movaps xmm0, xmm3
mulsd xmm3, qword [0x5ea5b0]
mov dword [edi + 0xa0], ecx
mulsd xmm0, qword [0x5ea5a0]
mov dword [edi + 0xa4], ecx
mov ecx, dword [edi + 0x88]
cvttsd2si eax, xmm0
movaps xmm0, xmm4
mulsd xmm4, qword [0x5ea5b0]
mov dword [edi + 0x98], eax
mulsd xmm0, qword [0x5ea5a0]
cvttsd2si eax, xmm3
mov dword [edi + 0x9c], eax
cvttsd2si eax, xmm0
mov dword [edi + 0xa8], eax
cvttsd2si eax, xmm4
mov dword [edi + 0xac], eax
mov eax, dword [esp + 0xb0]
cdq
sub eax, edx
sar eax, 1
inc eax
mov dword [edi + 0xb0], eax
mov eax, dword [esp + 0xb4]
mov dword [edi + 0xb4], eax
cmp dword [ecx + 8], 0
jne 0x537e96
call fcn.00468c30
jmp 0x537e9b
mov eax, dword [ecx]
mov dword [ecx + 8], eax
movsx esi, word [edi + 0x58]
xorps xmm3, xmm3
movsd xmm2, qword [0x5ea530]
mov eax, esi
sub eax, 0
je 0x537ed7
sub eax, 1
jne 0x537ecc
movsd xmm0, qword [edi + 0x28]
mulsd xmm0, qword [edi + 0x38]
comisd xmm0, xmm3
jb 0x537ef2
addsd xmm0, xmm2
jmp 0x537ef6
movsd xmm0, qword [esp + 0xb0]
jmp 0x537f02
movsd xmm0, qword [edi + 0x28]
mulsd xmm0, qword [edi + 0x38]
divsd xmm0, qword [edi + 0x60]
comisd xmm0, xmm3
jb 0x537ef2
addsd xmm0, xmm2
jmp 0x537ef6
subsd xmm0, xmm2
cvttsd2si eax, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
lea eax, [esp + 0x5c]
movsd qword [esp + 0x98], xmm0
push eax
lea eax, [esp + 0x5c]
movaps xmm1, xmm0
push eax
lea eax, [esp + 0x98]
push eax
call fcn.00538f30
cmp word [ebp + 0x1c], 0
jne 0x538313
movd xmm0, dword [esp + 0x58]
xorps xmm2, xmm2
movsd xmm1, qword [esp + 0x30]
mov eax, dword [edi + 0xa0]
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x84], eax
mov dword [esp + 0x78], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
movsd qword [esp + 0x28], xmm2
comisd xmm1, xmm0
movsd qword [esp + 0x88], xmm0
jb 0x538045
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
nop
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x537fb8
push eax
call esi
movsd xmm0, qword [esp + 0x88]
movsd xmm1, qword [esp + 0x30]
movsd xmm2, qword [esp + 0x28]
sub esp, 0x18
lea eax, [esp + 0x90]
mov ecx, edi
movsd qword [esp + 0x10], xmm2
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm0
push 0
push eax
push dword [esp + 0x7c]
push dword [esp + 0x60]
call fcn.00539020
mov eax, dword [esp + 0x80]
movaps xmm2, xmm0
mov ecx, dword [edi + 0x88]
inc eax
mov dword [esp + 0x78], eax
movsd qword [esp + 0x28], xmm2
mov eax, dword [ecx + 8]
mov eax, dword [eax]
test eax, eax
je 0x53800e
mov dword [ecx + 8], eax
jmp 0x538019
call fcn.00468c30
movsd xmm2, qword [esp + 0x28]
movd xmm0, dword [esp + 0x58]
movsd xmm1, qword [esp + 0x30]
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [esp + 0x88]
comisd xmm1, xmm0
movsd qword [esp + 0x88], xmm0
jae 0x537f90
mov eax, dword [edi + 0x88]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x53805e
push eax
call esi
movsd xmm0, qword [esp + 0x28]
lea eax, [esp + 0x78]
movsd xmm1, qword [esp + 0x88]
sub esp, 0x18
mov ecx, edi
movsd qword [esp + 0x10], xmm0
movsd xmm0, qword [esp + 0x48]
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
push 1
push eax
push dword [esp + 0x7c]
push dword [esp + 0x60]
call fcn.00539020
mov ecx, dword [edi + 0x88]
mov edx, dword [esp + 0x80]
mov dword [esp + 0x68], edx
mov dword [esp + 0x20], 0
mov eax, dword [ecx + 8]
mov eax, dword [eax]
test eax, eax
je 0x5380c4
mov dword [ecx + 8], eax
jmp 0x5380d0
call fcn.00468c30
mov edx, dword [esp + 0x80]
mov eax, dword [edi + 0x88]
mov ecx, dword [eax]
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x18]
sub eax, dword [ecx + 0x10]
xor ecx, ecx
add eax, dword [edi + 0xb4]
mov dword [esp + 0x6c], eax
mov dword [edi + 0xbc], 0
cmp dword [edi + 0xb8], ecx
jle 0x53871b
mov eax, dword [edi + 0x88]
mov dword [esp + 0x28], edx
mov dword [esp + 0x88], ecx
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x538122
push eax
call esi
push dword [esp + 0x20]
lea eax, [esp + 0xbc]
push 0x5a9ffc
push 0xa
push eax
call fcn.00406c50
mov ecx, dword [edi + 0xb0]
add esp, 0x10
imul ecx, eax
mov dword [esp + 0x18], eax
push dword [edi + 0xb4]
push ecx
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov ecx, dword [edi + 0x88]
mov ecx, dword [ecx + 8]
mov dword [ecx + 0x20], eax
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
push dword [eax + 0x20]
push dword [edi]
call dword [sym.imp.GDI32.dll_SelectObject]
push 8
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
push dword [edi]
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [edi + 0x88]
mov edx, dword [esp + 0x10]
mov eax, dword [eax + 8]
mov ecx, dword [edx + 0x18]
sub ecx, dword [edx + 0x10]
mov dword [eax + 0x10], ecx
mov eax, dword [edi + 0x88]
mov ecx, dword [edi + 0xb4]
sub ecx, dword [edx + 0x10]
add ecx, dword [edx + 0x18]
mov eax, dword [eax + 8]
mov dword [eax + 0x18], ecx
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0xc]
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
mov dword [eax + 0xc], ecx
mov eax, dword [edi + 0x88]
mov ecx, dword [eax + 8]
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
add eax, dword [ecx + 0xc]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
push dword [edi + 0xd0]
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xac], eax
mov eax, dword [edi + 0xb4]
mov dword [esp + 0xb0], eax
lea eax, [esp + 0xa4]
push eax
push dword [edi]
call dword [sym.imp.USER32.dll_FillRect]
push 0
push dword [esp + 0x1c]
lea eax, [esp + 0xc0]
push eax
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
add eax, 0xc
push eax
push 2
push 0
push 0
push dword [edi]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov eax, dword [edi + 0x88]
mov dword [esp + 0x24], eax
mov eax, dword [eax + 8]
mov dword [esp + 0x30], eax
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x14]
cmp ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x90]
cmovge ecx, dword [esp + 0x88]
cmp edx, dword [esp + 0x28]
mov dword [esp + 0x40], ecx
cmovle edx, dword [esp + 0x28]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x28], edx
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0xbc]
inc eax
cmp eax, dword [edi + 0xb8]
jge 0x5382f2
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
test eax, eax
je 0x5382e1
mov esi, dword [esp + 0x24]
mov dword [esi + 8], eax
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x5382f2
mov ecx, dword [esp + 0x24]
call fcn.00468c30
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x28]
inc dword [edi + 0xbc]
mov eax, dword [edi + 0xbc]
mov dword [esp + 0x68], edx
cmp eax, dword [edi + 0xb8]
jl 0x538104
jmp 0x538717
movsd xmm0, qword [esp + 0x30]
sub esi, 0
je 0x538353
sub esi, 1
jne 0x53834a
movaps xmm1, xmm0
mulsd xmm1, qword [edi + 0x28]
mulsd xmm1, qword [edi + 0x38]
comisd xmm1, xmm3
jb 0x538340
addsd xmm1, xmm2
cvttsd2si ecx, xmm1
jmp 0x53837c
subsd xmm1, xmm2
cvttsd2si ecx, xmm1
jmp 0x53837c
mov ecx, dword [esp + 0x80]
jmp 0x538384
mulsd xmm0, qword [edi + 0x28]
mulsd xmm0, qword [edi + 0x38]
divsd xmm0, qword [edi + 0x60]
comisd xmm0, xmm3
jb 0x53836e
addsd xmm0, xmm2
jmp 0x538372
subsd xmm0, xmm2
cvttsd2si ecx, xmm0
movsd xmm0, qword [esp + 0x30]
inc ecx
mov dword [esp + 0x80], ecx
movd xmm1, dword [esp + 0x58]
mov eax, dword [edi + 0xa0]
cvtdq2pd xmm1, xmm1
mov dword [esp + 0x10], ecx
mov dword [esp + 0x7c], 0
mov dword [esp + 0x84], eax
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], ecx
subsd xmm0, xmm1
comisd xmm0, xmm3
movsd qword [esp + 0x28], xmm0
jb 0x538464
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
nop dword [eax]
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x5383e9
push eax
call esi
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x30]
lea eax, [esp + 0x78]
sub esp, 0x1c
mov ecx, edi
movsd qword [esp + 0x14], xmm1
movsd qword [esp + 4], xmm0
push eax
push dword [esp + 0x7c]
push dword [esp + 0x60]
call fcn.00539430
mov eax, dword [esp + 0x78]
mov ecx, dword [edi + 0x88]
dec eax
mov dword [esp + 0x80], eax
movsd qword [esp + 0x30], xmm0
mov eax, dword [ecx + 8]
mov eax, dword [eax]
test eax, eax
je 0x538438
mov dword [ecx + 8], eax
jmp 0x53843d
call fcn.00468c30
movd xmm1, dword [esp + 0x58]
xorps xmm3, xmm3
movsd xmm0, qword [esp + 0x28]
cvtdq2pd xmm1, xmm1
subsd xmm0, xmm1
comisd xmm0, xmm3
movsd qword [esp + 0x28], xmm0
jae 0x5383d0
mov eax, dword [edi + 0x88]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x53847d
push eax
call esi
movsd xmm0, qword [esp + 0x30]
lea eax, [esp + 0x78]
sub esp, 0x1c
mov ecx, edi
movsd qword [esp + 0x14], xmm0
movsd xmm0, qword [esp + 0x44]
movsd qword [esp + 4], xmm0
push eax
push dword [esp + 0x7c]
push dword [esp + 0x60]
call fcn.00539430
mov edx, dword [edi + 0x88]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x60], ecx
mov eax, dword [edx + 8]
mov dword [esp + 0x24], 0
mov eax, dword [eax]
test eax, eax
je 0x5384d4
mov dword [edx + 8], eax
jmp 0x5384df
mov ecx, edx
call fcn.00468c30
mov ecx, dword [esp + 0x40]
mov eax, dword [edi + 0x88]
mov edx, dword [eax]
mov dword [esp + 0x20], edx
mov eax, dword [edx + 0x18]
sub eax, dword [edx + 0x10]
add eax, dword [edi + 0xb4]
cmp dword [edi + 0xb8], 0
mov dword [esp + 0x6c], eax
mov dword [edi + 0xbc], 0
jle 0x53871b
mov edx, dword [esp + 0x10]
nop word [eax + eax]
mov eax, dword [edi + 0x88]
mov dword [esp + 0x88], edx
mov dword [esp + 0x10], ecx
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x53853e
push eax
call esi
push dword [esp + 0x24]
lea eax, [esp + 0xbc]
push 0x5a9ffc
push 0xa
push eax
call fcn.00406c50
mov ecx, eax
add esp, 0x10
mov eax, dword [edi + 0xb0]
imul eax, ecx
mov dword [esp + 0x18], ecx
push dword [edi + 0xb4]
push eax
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov ecx, dword [edi + 0x88]
mov ecx, dword [ecx + 8]
mov dword [ecx + 0x20], eax
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
push dword [eax + 0x20]
push dword [edi]
call dword [sym.imp.GDI32.dll_SelectObject]
push 8
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
push dword [edi]
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [edi + 0x88]
mov edx, dword [esp + 0x20]
mov eax, dword [eax + 8]
mov ecx, dword [edx + 0x18]
sub ecx, dword [edx + 0x10]
mov dword [eax + 0x10], ecx
mov eax, dword [edi + 0x88]
mov ecx, dword [edi + 0xb4]
sub ecx, dword [edx + 0x10]
add ecx, dword [edx + 0x18]
mov eax, dword [eax + 8]
mov dword [eax + 0x18], ecx
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
cdq
sub eax, edx
mov edx, dword [esp + 0x20]
sar eax, 1
mov ecx, dword [edx + 0x14]
sub ecx, eax
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
mov dword [eax + 0xc], ecx
mov eax, dword [edi + 0x88]
mov ecx, dword [eax + 8]
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
add eax, dword [ecx + 0xc]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
push dword [edi + 0xd0]
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xac], eax
mov eax, dword [edi + 0xb4]
mov dword [esp + 0xb0], eax
lea eax, [esp + 0xa4]
push eax
push dword [edi]
call dword [sym.imp.USER32.dll_FillRect]
push 0
push dword [esp + 0x1c]
lea eax, [esp + 0xc0]
push eax
mov eax, dword [edi + 0x88]
mov eax, dword [eax + 8]
add eax, 0xc
push eax
push 2
push 0
push 0
push dword [edi]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov edx, dword [edi + 0x88]
mov eax, dword [edx + 8]
mov ecx, dword [eax + 0xc]
cmp ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x14]
cmovge ecx, dword [esp + 0x10]
cmp eax, dword [esp + 0x88]
mov dword [esp + 0x40], ecx
cmovle eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x90]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0xbc]
inc eax
cmp eax, dword [edi + 0xb8]
jge 0x5386f7
mov eax, dword [edx + 8]
mov eax, dword [eax]
test eax, eax
je 0x5386ec
mov dword [edx + 8], eax
jmp 0x5386f7
mov ecx, edx
call fcn.00468c30
mov ecx, dword [esp + 0x40]
inc dword [edi + 0xbc]
mov eax, dword [edi + 0xbc]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], edx
cmp eax, dword [edi + 0xb8]
jl 0x538520
mov dword [esp + 0x60], ecx
mov esi, dword [edi + 0x88]
mov eax, dword [esi + 4]
cmp dword [eax + 0xc], ecx
je 0x538741
mov eax, dword [edi + 0xb0]
imul eax, dword [esp + 0x18]
cdq
sub eax, edx
sar eax, 1
neg eax
add ecx, eax
mov dword [esp + 0x60], ecx
movups xmm0, xmmword [esp + 0x60]
mov eax, 0x20
movsd xmm2, qword [0x5ea530]
xorps xmm4, xmm4
movups xmmword [esi + 0x20c], xmm0
mov esi, dword [edi + 0x88]
mov edx, dword [edi + 0xb8]
cmp edx, eax
cmovg edx, eax
mov ecx, dword [esi + 0x20c]
mov eax, dword [esi + 0x214]
sub eax, ecx
movd xmm0, edx
xor edx, edx
cvtdq2pd xmm0, xmm0
movd xmm1, ecx
lea ecx, [esi + 0x18]
movd xmm6, eax
cvtdq2pd xmm6, xmm6
cvtdq2pd xmm1, xmm1
divsd xmm6, xmm0
nop dword [eax]
comisd xmm1, xmm4
mov eax, dword [esi + 0x210]
mov dword [ecx - 8], eax
mov eax, dword [esi + 0x218]
mov dword [ecx], eax
movaps xmm0, xmm1
jb 0x5387c0
addsd xmm0, xmm2
jmp 0x5387c4
subsd xmm0, xmm2
cvttsd2si eax, xmm0
addsd xmm1, xmm6
mov dword [ecx - 0xc], eax
movd xmm3, dword [esi + 0x214]
cvtdq2pd xmm3, xmm3
movaps xmm0, xmm1
addsd xmm0, xmm6
comisd xmm0, xmm3
jbe 0x5387eb
movaps xmm1, xmm3
comisd xmm1, xmm4
movaps xmm5, xmm1
subsd xmm5, xmm2
jb 0x538804
movaps xmm3, xmm1
addsd xmm3, xmm2
movaps xmm0, xmm3
jmp 0x53880e
movaps xmm0, xmm1
movaps xmm3, xmm5
addsd xmm0, xmm2
cvttsd2si eax, xmm3
inc edx
mov dword [ecx - 4], eax
add ecx, 0x10
comisd xmm1, xmm4
jae 0x538822
movaps xmm0, xmm5
cvttsd2si eax, xmm0
cmp eax, dword [esi + 0x214]
jl 0x5387a0
cmp edx, 0x20
jge 0x538874
mov eax, edx
mov ecx, 0x20
shl eax, 4
add eax, 0x18
add eax, esi
sub ecx, edx
nop dword [eax + eax]
mov dword [eax - 8], 0
lea eax, [eax + 0x10]
mov dword [eax - 0x10], 0
mov dword [eax - 0x1c], 0
mov dword [eax - 0x14], 0
sub ecx, 1
jne 0x538850
mov ecx, dword [edi + 0x88]
call fcn.00468cd0
mov ecx, dword [edi + 0x88]
mov eax, dword [ecx + 8]
mov esi, dword [eax]
test esi, esi
je 0x5388bf
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [ecx + 4], eax
mov dword [eax], 0
nop dword [eax]
push dword [esi + 0x20]
call edi
mov eax, esi
mov esi, dword [esi]
push 0x24
push eax
call fcn.00560815
add esp, 8
test esi, esi
jne 0x5388a0
mov edi, dword [esp + 0x94]
cmp byte [edi + 0xc8], 0
jne 0x5388f2
mov eax, dword [edi + 0x88]
mov dword [esp + 0x6c], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x68], 0
movups xmm0, xmmword [esp + 0x60]
movups xmmword [eax + 0x20c], xmm0
mov ecx, dword [edi + 0x8c]
cmp dword [ecx + 8], 0
jne 0x538905
call fcn.00468c30
jmp 0x53890a
mov eax, dword [ecx]
mov dword [ecx + 8], eax
movsx eax, word [edi + 0x58]
sub eax, 0
je 0x538957
sub eax, 1
jne 0x538968
movsd xmm0, qword [edi + 0x40]
mulsd xmm0, qword [edi + 0x30]
xorps xmm3, xmm3
comisd xmm0, xmm3
jb 0x538941
addsd xmm0, qword [0x5ea530]
cvttsd2si eax, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
jmp 0x538971
subsd xmm0, qword [0x5ea530]
cvttsd2si eax, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
jmp 0x538971
movsd xmm0, qword [edi + 0x40]
mulsd xmm0, qword [edi + 0x30]
divsd xmm0, qword [edi + 0x60]
jmp 0x538922
movsd xmm0, qword [esp + 0x98]
lea eax, [esp + 0x5c]
movaps xmm1, xmm0
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x98]
push eax
call fcn.00538f30
movd xmm0, dword [esp + 0x58]
xorps xmm2, xmm2
mov eax, dword [edi + 0x90]
movsd xmm1, qword [ebp + 0x10]
mov esi, dword [esp + 0x5c]
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], eax
comisd xmm1, xmm0
mov dword [esp + 0x18], eax
mov dword [esp + 0x68], eax
movsd qword [esp + 0x30], xmm2
movsd qword [esp + 0x28], xmm0
jb 0x538a9b
nop word [eax + eax]
mov eax, dword [edi + 0x8c]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x538a18
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
movsd xmm0, qword [esp + 0x28]
movsd xmm1, qword [ebp + 0x10]
movsd xmm2, qword [esp + 0x30]
sub esp, 0x18
lea eax, [esp + 0x90]
mov ecx, edi
movsd qword [esp + 0x10], xmm2
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm0
push 0
push eax
push esi
push dword [esp + 0x60]
call fcn.00539780
mov eax, dword [esp + 0x84]
movaps xmm2, xmm0
mov ecx, dword [edi + 0x8c]
inc eax
mov dword [esp + 0x7c], eax
movsd qword [esp + 0x30], xmm2
mov eax, dword [ecx + 8]
mov eax, dword [eax]
test eax, eax
je 0x538a6b
mov dword [ecx + 8], eax
jmp 0x538a76
call fcn.00468c30
movsd xmm2, qword [esp + 0x30]
movd xmm0, dword [esp + 0x58]
movsd xmm1, qword [ebp + 0x10]
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [esp + 0x28]
comisd xmm1, xmm0
movsd qword [esp + 0x28], xmm0
jae 0x5389f0
mov eax, dword [edi + 0x8c]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x538ab4
push eax
call esi
movsd xmm0, qword [esp + 0x30]
lea eax, [esp + 0x78]
movsd xmm1, qword [esp + 0x28]
sub esp, 0x18
mov ecx, edi
movsd qword [esp + 0x10], xmm0
movsd xmm0, qword [ebp + 0x10]
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
push 1
push eax
push dword [esp + 0x7c]
push dword [esp + 0x60]
call fcn.00539780
mov ecx, dword [edi + 0x8c]
mov eax, dword [esp + 0x84]
mov dword [esp + 0x40], eax
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x24], 0
mov eax, dword [eax]
test eax, eax
je 0x538b1a
mov dword [ecx + 8], eax
jmp 0x538b1f
call fcn.00468c30
cmp dword [edi + 0xc0], 0
mov ecx, dword [edi + 0x8c]
mov edx, ecx
mov eax, dword [ecx]
mov dword [esp + 0x20], eax
mov dword [edi + 0xc4], 0
jle 0x538d65
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x30], eax
mov eax, dword [edx + 8]
mov eax, dword [eax + 0x20]
test eax, eax
je 0x538b78
push eax
call esi
push dword [esp + 0x24]
lea eax, [esp + 0xbc]
push 0x5a9ffc
push 0xa
push eax
call fcn.00406c50
mov ecx, dword [edi + 0xb0]
add esp, 0x10
mov esi, eax
imul ecx, esi
push dword [edi + 0xb4]
push ecx
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov ecx, dword [edi + 0x8c]
mov ecx, dword [ecx + 8]
mov dword [ecx + 0x20], eax
mov eax, dword [edi + 0x8c]
mov eax, dword [eax + 8]
push dword [eax + 0x20]
push dword [edi]
call dword [sym.imp.GDI32.dll_SelectObject]
push 8
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
push dword [edi]
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [edi + 0xb4]
cdq
sub eax, edx
mov edx, dword [esp + 0x20]
sar eax, 1
mov ecx, dword [edx + 0x10]
sub ecx, eax
mov eax, dword [edi + 0x8c]
mov eax, dword [eax + 8]
mov dword [eax + 0x10], ecx
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + 8]
mov eax, dword [ecx + 0x10]
add eax, dword [edi + 0xb4]
mov dword [ecx + 0x18], eax
mov ecx, dword [edx + 0x14]
mov eax, dword [edi + 0x8c]
sub ecx, dword [edx + 0xc]
inc ecx
mov eax, dword [eax + 8]
mov dword [eax + 0xc], ecx
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + 8]
mov eax, dword [edi + 0xb0]
lea eax, [eax + eax*2]
add eax, dword [ecx + 0xc]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0xb0]
push dword [edi + 0xd0]
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
lea eax, [eax + eax*2]
mov dword [esp + 0xac], eax
mov eax, dword [edi + 0xb4]
mov dword [esp + 0xb0], eax
lea eax, [esp + 0xa4]
push eax
push dword [edi]
call dword [sym.imp.USER32.dll_FillRect]
push 0
push esi
lea eax, [esp + 0xc0]
push eax
mov eax, dword [edi + 0x8c]
mov eax, dword [eax + 8]
add eax, 0xc
push eax
push 2
push 0
push 0
push dword [edi]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov ecx, dword [edi + 0x8c]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0x10]
cmp eax, dword [esp + 0x30]
mov esi, dword [edx + 0x18]
cmovge eax, dword [esp + 0x30]
cmp esi, dword [esp + 0x28]
mov dword [esp + 0x10], eax
cmovle esi, dword [esp + 0x28]
mov eax, dword [edx + 0x14]
mov edx, ecx
cmp eax, dword [esp + 0x88]
mov dword [esp + 0x40], esi
cmovle eax, dword [esp + 0x88]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x90]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0xc4]
inc eax
cmp eax, dword [edi + 0xc0]
jge 0x538d2f
mov eax, dword [ecx + 8]
mov eax, dword [eax]
test eax, eax
je 0x538d22
mov dword [ecx + 8], eax
jmp 0x538d27
call fcn.00468c30
mov ecx, dword [edi + 0x8c]
mov edx, ecx
mov esi, dword [esp + 0x10]
inc dword [edi + 0xc4]
mov eax, dword [edi + 0xc4]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x40]
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x68], esi
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
cmp eax, dword [edi + 0xc0]
jl 0x538b50
mov eax, dword [ecx + 8]
mov esi, dword [eax]
test esi, esi
je 0x538da5
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [ecx + 4], eax
mov dword [eax], 0
nop dword [eax]
push dword [esi + 0x20]
call edi
mov eax, esi
mov esi, dword [esi]
push 0x24
push eax
call fcn.00560815
add esp, 8
test esi, esi
jne 0x538d80
mov edi, dword [esp + 0x94]
mov edx, dword [edi + 0x8c]
movups xmm0, xmmword [esp + 0x60]
mov eax, 0x20
movsd xmm2, qword [0x5ea530]
xorps xmm5, xmm5
movups xmmword [edx + 0x20c], xmm0
mov esi, dword [edi + 0x8c]
mov edx, dword [edi + 0xc0]
cmp edx, 0x20
cmovg edx, eax
mov ecx, dword [esi + 0x210]
mov eax, dword [esi + 0x218]
sub eax, ecx
movd xmm0, edx
xor edx, edx
cvtdq2pd xmm0, xmm0
movd xmm1, ecx
lea ecx, [esi + 0x14]
movd xmm6, eax
cvtdq2pd xmm6, xmm6
cvtdq2pd xmm1, xmm1
divsd xmm6, xmm0
comisd xmm1, xmm5
mov eax, dword [esi + 0x20c]
mov dword [ecx - 8], eax
mov eax, dword [esi + 0x214]
mov dword [ecx], eax
movaps xmm0, xmm1
jb 0x538e22
addsd xmm0, xmm2
jmp 0x538e26
subsd xmm0, xmm2
cvttsd2si eax, xmm0
addsd xmm1, xmm6
mov dword [ecx - 4], eax
movd xmm3, dword [esi + 0x218]
cvtdq2pd xmm3, xmm3
movaps xmm0, xmm1
addsd xmm0, xmm6
comisd xmm0, xmm3
jbe 0x538e4d
movaps xmm1, xmm3
comisd xmm1, xmm5
movaps xmm4, xmm1
subsd xmm4, xmm2
jb 0x538e66
movaps xmm3, xmm1
addsd xmm3, xmm2
movaps xmm0, xmm3
jmp 0x538e70
movaps xmm0, xmm1
movaps xmm3, xmm4
addsd xmm0, xmm2
cvttsd2si eax, xmm3
inc edx
mov dword [ecx + 4], eax
add ecx, 0x10
comisd xmm1, xmm5
jae 0x538e84
movaps xmm0, xmm4
cvttsd2si eax, xmm0
cmp eax, dword [esi + 0x218]
jl 0x538e02
cmp edx, 0x20
jge 0x538ed4
mov eax, edx
mov ecx, 0x20
shl eax, 4
add eax, 0x18
add eax, esi
sub ecx, edx
nop word [eax + eax]
mov dword [eax - 8], 0
lea eax, [eax + 0x10]
mov dword [eax - 0x10], 0
mov dword [eax - 0x1c], 0
mov dword [eax - 0x14], 0
sub ecx, 1
jne 0x538eb0
mov ecx, dword [edi + 0x8c]
call fcn.00468cd0
cmp byte [edi + 0xc9], 0
jne 0x538f12
mov eax, dword [edi + 0x8c]
mov dword [esp + 0x64], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
movups xmm0, xmmword [esp + 0x60]
movups xmmword [eax + 0x20c], xmm0
mov ecx, dword [esp + 0xcc]
pop edi
pop esi
xor ecx, esp
call fcn.0056060a
mov esp, ebp
pop ebp
ret 0x18