Function at 0x516de0
Capabilities:
Get graphical window text
Hide graphical window
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xaa8
mov eax, dword [0x5f3008]
xor eax, esp
mov dword [esp + 0xaa4], eax
mov eax, dword [ebp + 0xc]
mov edx, ecx
mov ecx, dword [ebp + 8]
xorps xmm0, xmm0
push esi
mov dword [esp + 0x58], ecx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
mov esi, eax
push edi
mov dword [esp + 0x88], ecx
lea edi, [esp + 0x108]
mov ecx, 0x228
mov dword [esp + 0x34], eax
xor al, al
mov dword [esp + 0x14], edx
cmp dword [edx + 0x21b90], 0
rep movsd dword es:[edi], dword [esi]
mov esi, dword [sym.imp.USER32.dll_MessageBoxW]
movlpd qword [esp + 0xbc], xmm0
mov dword [esp + 0xc4], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov byte [esp + 0x2f], al
je 0x516eaa
push dword [edx + 0x21b8c]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x516eaa
movzx esi, word [eax + 0x5e]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
cmp si, 3
mov esi, dword [sym.imp.USER32.dll_MessageBoxW]
je 0x516ec5
push 0x21
push 0x591508
push 0x5e81d8
push dword [esp + 0x68]
call esi
cmp eax, 1
jne 0x517e98
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x14]
movzx ecx, byte [edx + 0x808]
mov eax, dword [edi + 0x217d0]
mov dword [esp + 0x30], eax
movzx eax, byte [edx + 0x807]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x806]
shl ecx, 8
or ecx, eax
push ecx
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [esp + 0x8c], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x28]
movzx ecx, word [eax + 0x60]
movzx edi, word [eax + 0x5e]
mov dword [esp + 0x48], ecx
movzx ecx, word [eax + 0x5a]
mov dword [esp + 0x10], edi
test cx, cx
jne 0x516f36
cmp di, 3
jne 0x516f5d
push 0x21
push 0x591508
push 0x5e8190
jmp 0x516f4e
cmp cx, 1
jne 0x516f5d
cmp di, 2
jne 0x516f5d
push 0x21
push 0x591508
push 0x5e8238
push dword [esp + 0x68]
call esi
cmp eax, 1
jne 0x517e98
mov eax, dword [esp + 0x30]
xor ecx, ecx
dec eax
cdq
and edx, 3
add eax, edx
mov edx, 8
sar eax, 2
lea esi, [eax*4 + 4]
mov eax, esi
mov dword [esp + 0x60], esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00560858
mov dword [esp + 0x2c], eax
add esp, 4
mov eax, dword [esp + 0x48]
test ax, ax
jne 0x516fa6
mov ecx, esi
mov dword [esp + 0x24], ecx
jmp 0x516fc6
cwde
lea ecx, [esp + 0xb0]
push 0xa
push ecx
push dword [eax*4 + 0x591810]
call fcn.005694d7
add esp, 0xc
mov dword [esp + 0x24], eax
mov ecx, eax
mov eax, esi
cdq
idiv ecx
mov esi, edx
mov edx, eax
xor eax, eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
test edx, edx
jle 0x5170c6
mov eax, ecx
mov esi, 1
cdq
sub eax, edx
mov dword [esp + 0x48], esi
mov edx, dword [esp + 0x28]
mov ecx, eax
mov eax, dword [esp + 0x24]
shl eax, 3
sar ecx, 1
add edx, 8
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], eax
nop dword [eax]
xor eax, eax
mov dword [esp + 0x78], eax
test ecx, ecx
jle 0x5170a3
mov ecx, dword [esp + 0x24]
mov edx, esi
dec ecx
add esi, ecx
mov ecx, dword [esp + 0x40]
nop word [eax + eax]
and eax, 1
mov byte [ecx - 4], 0
mov byte [ecx + 4], 0
mov dword [esp + 0x74], eax
cmp di, 2
jne 0x51706b
test eax, eax
mov edi, edx
mov eax, esi
cmovne edi, esi
cmp dword [esp + 0x74], 0
cmovne eax, edx
mov dword [ecx - 8], eax
jmp 0x51707b
test eax, eax
jne 0x517076
mov dword [ecx - 8], edx
mov edi, esi
jmp 0x51707b
mov dword [ecx - 8], esi
mov edi, edx
mov eax, ecx
dec esi
inc edx
add ecx, 0x10
mov dword [eax], edi
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
inc eax
mov dword [esp + 0x78], eax
cmp eax, dword [esp + 0x64]
jl 0x517040
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
add esi, dword [esp + 0x24]
add edx, dword [esp + 0x68]
sub dword [esp + 0x30], 1
mov dword [esp + 0x48], esi
mov dword [esp + 0x40], edx
jne 0x517020
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x3c]
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x68], eax
test eax, eax
jle 0x517160
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
imul edi, ecx
imul eax, ecx
mov ecx, edi
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x28]
add esi, eax
add edi, 8
lea edx, [eax + 1]
not eax
mov dword [esp + 0x1c], eax
lea ecx, [edi + ecx*8]
mov edi, dword [esp + 0x10]
add eax, edx
mov byte [ecx - 4], 0
and eax, 1
mov byte [ecx + 4], 0
mov dword [esp + 0x3c], eax
cmp di, 2
jne 0x517133
test eax, eax
mov edi, edx
mov eax, esi
cmovne edi, esi
cmp dword [esp + 0x3c], 0
cmovne eax, edx
mov dword [ecx - 8], eax
jmp 0x517143
test eax, eax
jne 0x51713e
mov dword [ecx - 8], edx
mov edi, esi
jmp 0x517143
mov dword [ecx - 8], esi
mov edi, edx
mov eax, ecx
inc edx
dec esi
add ecx, 0x10
mov dword [eax], edi
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
add eax, edx
cmp eax, dword [esp + 0x68]
mov eax, dword [esp + 0x1c]
jl 0x517106
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x21b98]
test al, 2
je 0x51759c
xor edx, edx
mov dword [esp + 0x30], edx
cmp dword [ecx + 0x21ba8], edx
jbe 0x517219
mov esi, dword [ecx + 0x21bac]
mov edi, dword [esi + edx*8]
test edi, edi
je 0x517219
movsx eax, word [ecx + 0x21bec]
mov esi, dword [esi + edx*8 + 4]
lea ecx, [eax + edi]
add eax, esi
cmp ecx, eax
cmovbe edi, eax
cmovbe esi, ecx
cmp esi, edi
ja 0x517204
mov ecx, dword [esp + 0x44]
mov eax, edi
sub eax, esi
lea ecx, [ecx + eax*4]
add ecx, 4
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x60]
xor eax, eax
test edx, edx
jle 0x5171db
cmp dword [ecx + eax*8], esi
je 0x5171db
inc eax
cmp eax, edx
jl 0x5171d1
cdq
inc esi
and edx, 3
add eax, edx
sar eax, 2
shl eax, 5
mov byte [eax + ecx + 4], 1
mov byte [eax + ecx + 0xc], 1
mov byte [eax + ecx + 0x14], 1
mov byte [eax + ecx + 0x1c], 1
cmp esi, edi
jbe 0x5171c7
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
inc edx
mov dword [esp + 0x30], edx
cmp edx, dword [ecx + 0x21ba8]
jb 0x517184
mov edi, dword [esp + 0x28]
push 0x80
lea eax, [esp + 0x9ac]
push eax
push dword [esp + 0x64]
call dword [sym.imp.USER32.dll_GetWindowTextW]
lea eax, [esp + 0x9a8]
mov dword [esp + 0xb4], 0x14
mov dword [esp + 0xb8], eax
lea eax, [esp + 0xb4]
push eax
mov eax, dword [esp + 0x18]
push dword [eax + 0x21b94]
call dword [sym.imp.GDI32.dll_StartDocW]
mov edx, dword [esp + 0x34]
mov esi, dword [sym.imp.GDI32.dll_CreatePen]
movzx ecx, byte [edx + 0x811]
movzx eax, byte [edx + 0x810]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x80f]
shl ecx, 8
or ecx, eax
push ecx
push 1
push 0
call esi
mov edx, dword [esp + 0x34]
mov dword [esp + 0x48], eax
movzx ecx, byte [edx + 0x814]
movzx eax, byte [edx + 0x813]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x812]
shl ecx, 8
or ecx, eax
push ecx
push 1
push 0
call esi
mov edx, dword [esp + 0x34]
mov dword [esp + 0x64], eax
movzx ecx, byte [edx + 0x817]
movzx eax, byte [edx + 0x816]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x815]
shl ecx, 8
or ecx, eax
push ecx
push 1
push 0
call esi
mov esi, dword [esp + 0x18]
push 1
push esi
mov dword [esp + 0x7c], eax
call dword [sym.imp.GDI32.dll_SetBkMode]
push 0x18
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
cmp dword [esp + 0x44], 0xa
jle 0x51733e
mov eax, dword [esp + 0x14]
push str.pS7R_N
push 0
push 0x801d
mov eax, dword [eax + 0x40]
push dword [eax]
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [esp + 0x14]
push 5
mov eax, dword [eax + 0x40]
push dword [eax]
call dword [sym.imp.USER32.dll_ShowWindow]
xor edx, edx
mov dword [esp + 0x1c], edx
cmp dword [esp + 0x60], edx
jle 0x517e46
nop
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x48]
cmp byte [eax + 0x2083d], 0
jne 0x517e38
mov al, byte [edi + edx*8 + 4]
test al, al
je 0x517389
test dl, 1
jne 0x517389
push esi
call dword [sym.imp.GDI32.dll_StartPage]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov byte [esp + 0x2f], 1
mov al, byte [edi + eax*8 + 4]
mov ecx, dword [ecx]
mov edx, 1
mov dword [esp + 0x10], ecx
test ecx, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], edx
je 0x517e0e
mov eax, dword [esp + 0x10]
nop dword [eax + eax]
cmp dword [edi + ecx*8], edx
jne 0x517df7
cmp byte [edi + ecx*8 + 4], 0
je 0x517df7
mov ecx, dword [esp + 0x44]
cmp ecx, 0xa
jle 0x517464
mov eax, dword [esp + 0x80]
inc eax
mov dword [esp + 0x80], eax
imul eax, eax, 0x64
cdq
idiv ecx
mov esi, eax
cmp esi, dword [esp + 0x84]
je 0x517464
push 1
push 0
push 0
push 0
lea eax, [esp + 0xf0]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x517446
nop
lea eax, [esp + 0xe0]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0xe0]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 1
push 0
push 0
push 0
lea eax, [esp + 0xf0]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x517410
mov eax, dword [esp + 0x14]
push esi
push 0
push 0x801c
mov eax, dword [eax + 0x40]
push dword [eax]
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x10]
movsd xmm1, qword [ebp + 0x2c]
mov edx, dword [ebp + 0x1c]
movsd xmm2, qword [ebp + 0x24]
mov eax, dword [esi + 0xc]
mov dword [esp + 0xdc], eax
mov eax, dword [esi + 8]
mov dword [esp + 0xd8], eax
mov eax, dword [ebp + 0x20]
neg eax
mov dword [esp + 0xcc], eax
mov eax, dword [esi + 0x14]
sub eax, dword [esi + 0xc]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
sub eax, dword [ebp + 0x20]
mov dword [esp + 0xd4], eax
mov eax, edx
neg eax
mov dword [esp + 0xc8], eax
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 8]
movd xmm0, eax
mov eax, dword [esp + 0x1c]
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
cvttsd2si ecx, xmm0
mov esi, ecx
sub esi, edx
mov dword [esp + 0xd0], esi
test al, 1
je 0x517500
mov eax, ecx
sub eax, edx
sub edx, ecx
mov dword [esp + 0xc8], eax
lea eax, [esi + ecx]
mov dword [esp + 0xd0], eax
sub esp, 0x10
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x118]
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm2
push dword [ebp + 0x20]
push edx
push dword [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x30]
push eax
push 0
lea eax, [esp + 0xf0]
push eax
push dword [esp + 0x90]
lea eax, [esp + 0x108]
push dword [esp + 0x78]
push eax
mov eax, dword [esp + 0x4c]
push dword [eax + 0x217e4]
push esi
call fcn.0052fa60
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x28]
cmp byte [ecx + 0x546], 0
movups xmm0, xmmword [ecx + 0xa0]
movups xmmword [esp + 0x90], xmm0
movups xmm0, xmmword [ecx + 0xb0]
movups xmmword [esp + 0xa0], xmm0
movsd xmm0, qword [0x5ea530]
je 0x517613
movaps xmm4, xmm0
movaps xmm5, xmm0
jmp 0x517625
mov edx, dword [esp + 0x60]
test eax, 0x400000
je 0x5175ee
mov edi, dword [esp + 0x28]
xor eax, eax
test edx, edx
jle 0x5175c1
mov ecx, dword [ecx + 0x217d8]
cmp dword [edi + eax*8], ecx
je 0x5175c1
inc eax
cmp eax, edx
jl 0x5175b7
cdq
and edx, 3
mov dword [esp + 0x44], 4
add eax, edx
sar eax, 2
shl eax, 5
mov byte [eax + edi + 4], 1
mov byte [eax + edi + 0xc], 1
mov byte [eax + edi + 0x14], 1
mov byte [eax + edi + 0x1c], 1
jmp 0x51721d
test edx, edx
jle 0x517219
mov edi, dword [esp + 0x28]
mov ecx, edx
mov dword [esp + 0x44], edx
lea eax, [edi + 4]
mov byte [eax], 1
lea eax, [eax + 8]
sub ecx, 1
jne 0x517603
jmp 0x51721d
movsd xmm5, qword [esp + 0xa0]
movsd xmm4, qword [esp + 0x90]
cmp byte [ecx + 0x547], 0
je 0x517636
movaps xmm6, xmm0
movaps xmm7, xmm0
jmp 0x517648
movsd xmm7, qword [esp + 0xa8]
movsd xmm6, qword [esp + 0x98]
cmp byte [ecx + 0x62], 0
je 0x517686
test byte [esp + 0x20], 1
jne 0x517686
movzx eax, word [ecx + 0x5e]
cmp ax, 1
jne 0x517666
cmp word [ecx + 0x5c], 0
jmp 0x517670
test ax, ax
jne 0x51767d
cmp word [ecx + 0x5c], 1
jne 0x51767d
movaps xmm0, xmm7
movaps xmm7, xmm6
movaps xmm6, xmm0
jmp 0x517686
movaps xmm0, xmm5
movaps xmm5, xmm4
movaps xmm4, xmm0
cmp word [ecx + 0x98], 0
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x217e4]
movsd xmm0, qword [eax + 0x28]
movsd xmm2, qword [eax + 0x38]
movaps xmm1, xmm0
mulsd xmm1, xmm4
xorps xmm4, xmm4
mulsd xmm1, xmm2
jne 0x51775a
movsd xmm3, qword [eax + 0x60]
divsd xmm1, xmm3
comisd xmm1, xmm4
movsd xmm4, qword [0x5ea530]
jb 0x5176d3
addsd xmm1, xmm4
jmp 0x5176d7
subsd xmm1, xmm4
mulsd xmm0, xmm5
xorps xmm5, xmm5
cvttsd2si edx, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x4c], edx
divsd xmm0, xmm3
comisd xmm0, xmm5
jb 0x5176fa
addsd xmm0, xmm4
jmp 0x5176fe
subsd xmm0, xmm4
movsd xmm2, qword [eax + 0x40]
cvttsd2si edx, xmm0
movsd xmm0, qword [eax + 0x30]
movaps xmm1, xmm0
mov dword [esp + 0x54], edx
mulsd xmm1, xmm6
mulsd xmm1, xmm2
divsd xmm1, xmm3
comisd xmm1, xmm5
jb 0x51772b
addsd xmm1, xmm4
jmp 0x51772f
subsd xmm1, xmm4
mulsd xmm0, xmm7
cvttsd2si eax, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x50], eax
mov dword [esp + 0x24], eax
divsd xmm0, xmm3
comisd xmm0, xmm5
jb 0x5177e2
addsd xmm0, xmm4
jmp 0x5177e6
comisd xmm1, xmm4
movsd xmm4, qword [0x5ea530]
jb 0x51776e
addsd xmm1, xmm4
jmp 0x517772
subsd xmm1, xmm4
mulsd xmm0, xmm5
xorps xmm5, xmm5
cvttsd2si edx, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x4c], edx
comisd xmm0, xmm5
jb 0x517791
addsd xmm0, xmm4
jmp 0x517795
subsd xmm0, xmm4
movsd xmm2, qword [eax + 0x40]
cvttsd2si edx, xmm0
movsd xmm0, qword [eax + 0x30]
movaps xmm1, xmm0
mov dword [esp + 0x54], edx
mulsd xmm1, xmm6
mulsd xmm1, xmm2
comisd xmm1, xmm5
jb 0x5177be
addsd xmm1, xmm4
jmp 0x5177c2
subsd xmm1, xmm4
mulsd xmm0, xmm7
cvttsd2si eax, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x50], eax
mov dword [esp + 0x24], eax
comisd xmm0, xmm5
jb 0x5177e2
addsd xmm0, xmm4
jmp 0x5177e6
subsd xmm0, xmm4
cmp byte [ecx + 0x108], 0
cvttsd2si eax, xmm0
mov dword [esp + 0x58], eax
je 0x517876
mov eax, dword [esp + 0x34]
movups xmm0, xmmword [ecx + 0xc0]
movzx eax, word [eax + 0x3e]
movups xmmword [esp + 0xe0], xmm0
cmp ax, 8
jne 0x517842
lea eax, [esp + 0x108]
push eax
push dword [esp + 0x24]
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0xd4]
push eax
lea eax, [esp + 0xf0]
push eax
movzx eax, word [ecx + 0x10a]
jmp 0x517863
lea ecx, [esp + 0x108]
push ecx
push dword [esp + 0x24]
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0xf0]
push ecx
mov ecx, dword [esp + 0x28]
push eax
push esi
call fcn.0051d8d0
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
cmp byte [ebp + 0x18], 0
je 0x5179ca
mov eax, dword [esp + 0x34]
cmp byte [eax + 0x780], 0
mov eax, dword [esp + 0x10]
je 0x517def
mov eax, dword [eax + 0x28]
xor esi, esi
add eax, 0x120
cmp word [eax], si
je 0x5178ae
lea eax, [eax + 2]
inc esi
cmp word [eax], 0
jne 0x5178a4
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
push dword [eax + 0x2184c]
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
push 0
push edi
mov dword [esp + 0x44], eax
call dword [sym.imp.GDI32.dll_SetTextAlign]
movsd xmm0, qword [esp + 0x890]
xorps xmm3, xmm3
movsd xmm2, qword [0x5ea530]
mov dword [esp + 0x38], eax
addsd xmm0, xmm2
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x217e4]
mulsd xmm0, qword [ecx + 0x28]
movsd xmm1, qword [ecx + 0x60]
mulsd xmm0, qword [ecx + 0x38]
divsd xmm0, xmm1
comisd xmm0, xmm3
jb 0x517915
addsd xmm0, xmm2
jmp 0x517919
subsd xmm0, xmm2
cvttsd2si edi, xmm0
movsd xmm0, qword [esp + 0x898]
addsd xmm0, qword [0x5ea528]
mulsd xmm0, qword [ecx + 0x30]
mulsd xmm0, qword [ecx + 0x40]
divsd xmm0, xmm1
comisd xmm0, xmm3
jb 0x517948
addsd xmm0, xmm2
jmp 0x51794c
subsd xmm0, xmm2
mov edx, dword [esp + 0x34]
movsd qword [esp + 0x68], xmm0
movzx ecx, byte [edx + 0x805]
movzx eax, byte [edx + 0x804]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x803]
shl ecx, 8
or ecx, eax
push ecx
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
push 0
push esi
mov eax, dword [eax + 0x28]
mov esi, dword [esp + 0x20]
add eax, 0x120
push eax
cvttsd2si eax, qword [esp + 0x74]
push 0
push 2
sub ecx, eax
mov eax, dword [esp + 0x60]
add ecx, dword [esp + 0xe0]
add eax, edi
add eax, dword [esp + 0xdc]
push ecx
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push dword [esp + 0x3c]
jmp 0x517dd5
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x14]
push dword [esp + 0x24]
mov ecx, dword [eax + 0x28]
call fcn.00537120
mov edx, dword [esp + 0x10]
movsd xmm0, qword [esp + 0x898]
movzx edi, ax
movsd qword [esp + 0xe0], xmm0
mov eax, dword [edx + 0x18]
movsd xmm0, qword [esp + 0x890]
mov dword [esp + 0x3c], edi
movsd qword [esp + 0x78], xmm0
test eax, eax
je 0x517b89
mov ecx, dword [esp + 0x34]
cmp byte [ecx + 0x780], 0
je 0x517b89
test di, di
je 0x517b89
xor esi, esi
cmp word [eax], si
je 0x517a41
lea eax, [eax + 2]
inc esi
cmp word [eax], 0
jne 0x517a37
mov eax, dword [esp + 0x14]
push dword [eax + 0x2184c]
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x68], eax
cmp di, 1
jne 0x517a63
push 8
jmp 0x517a65
push 0xa
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SetTextAlign]
movsd xmm0, qword [esp + 0x78]
xorps xmm3, xmm3
movsd xmm2, qword [0x5ea530]
mov dword [esp + 0x38], eax
addsd xmm0, xmm2
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x217e4]
mulsd xmm0, qword [eax + 0x28]
movsd xmm1, qword [eax + 0x60]
mulsd xmm0, qword [eax + 0x38]
divsd xmm0, xmm1
comisd xmm0, xmm3
jb 0x517ab1
addsd xmm0, xmm2
jmp 0x517ab5
subsd xmm0, xmm2
cvttsd2si ecx, xmm0
movsd xmm0, qword [esp + 0xe0]
addsd xmm0, qword [0x5ea528]
mov dword [esp + 0x30], ecx
mulsd xmm0, qword [eax + 0x30]
mulsd xmm0, qword [eax + 0x40]
divsd xmm0, xmm1
comisd xmm0, xmm3
jb 0x517ae8
addsd xmm0, xmm2
jmp 0x517aec
subsd xmm0, xmm2
mov edx, dword [esp + 0x34]
cvttsd2si edi, xmm0
movzx ecx, byte [edx + 0x805]
movzx eax, byte [edx + 0x804]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x803]
shl ecx, 8
or ecx, eax
push ecx
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SetTextColor]
mov ecx, dword [esp + 0x10]
push 0
push esi
mov esi, dword [esp + 0x20]
mov eax, dword [ecx + 0x18]
push eax
mov eax, dword [esp + 0x30]
push 0
sub eax, edi
add eax, dword [esp + 0xdc]
cmp word [esp + 0x4c], 1
push 2
push eax
jne 0x517b58
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x48]
add eax, dword [esp + 0xe0]
jmp 0x517b67
mov eax, dword [esp + 0xe8]
sub eax, dword [esp + 0x48]
sub eax, dword [esp + 0x6c]
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push dword [esp + 0x68]
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x38]
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
movsx eax, word [eax + 0x21bec]
sub ecx, eax
cmp ecx, 1
jle 0x517de7
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x48]
cmp byte [eax + 0x5499], 0
je 0x517de7
mov di, word [esp + 0x5c]
test di, di
jle 0x517de7
mov eax, dword [edx + 0x28]
add eax, 0x120
je 0x517de7
xor esi, esi
cmp word [eax], si
je 0x517bea
nop word [eax + eax]
lea eax, [eax + 2]
inc esi
cmp word [eax], 0
jne 0x517be0
push dword [ecx + 0x2184c]
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x68], eax
movsx eax, di
dec eax
mov dword [esp + 0x3c], eax
cmp eax, 3
ja case.default.0x517c0b
jmp dword [eax*4 + 0x517eb0]
push 8
jmp 0x517c20
push 0xa
jmp 0x517c20
push 0
jmp 0x517c20
push 2
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x14]
xorps xmm3, xmm3
movsd xmm1, qword [esp + 0x78]
movsd xmm2, qword [0x5ea530]
addsd xmm1, xmm2
mov eax, dword [eax + 0x217e4]
mulsd xmm1, qword [eax + 0x28]
movsd xmm0, qword [eax + 0x60]
mulsd xmm1, qword [eax + 0x38]
divsd xmm1, xmm0
comisd xmm1, xmm3
jb 0x517c6c
addsd xmm1, xmm2
jmp 0x517c70
subsd xmm1, xmm2
cvttsd2si ecx, xmm1
movsd xmm1, qword [esp + 0xe0]
addsd xmm1, qword [0x5ea528]
mov dword [esp + 0x40], ecx
mulsd xmm1, qword [eax + 0x30]
mulsd xmm1, qword [eax + 0x40]
divsd xmm1, xmm0
comisd xmm1, xmm3
jb 0x517ca3
addsd xmm1, xmm2
jmp 0x517ca7
subsd xmm1, xmm2
mov edx, dword [esp + 0x34]
cvttsd2si edi, xmm1
movzx ecx, byte [edx + 0x805]
movzx eax, byte [edx + 0x804]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x803]
shl ecx, 8
or ecx, eax
push ecx
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esp + 0x3c]
cmp eax, 3
ja case.default.0x517ce6
jmp dword [eax*4 + 0x517ec0]
mov eax, dword [esp + 0x10]
push 0
push esi
mov esi, dword [esp + 0x20]
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
mov eax, dword [esp + 0x30]
push 0
sub eax, edi
add eax, dword [esp + 0xdc]
push 2
push eax
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x58]
add eax, dword [esp + 0xe0]
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
jmp 0x517dd1
mov eax, dword [esp + 0x10]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
mov eax, dword [esp + 0x30]
push 0
sub eax, edi
add eax, dword [esp + 0xdc]
push 2
push eax
mov eax, dword [esp + 0xe8]
sub eax, dword [esp + 0x58]
sub eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x30]
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
jmp 0x517dd1
mov eax, dword [esp + 0x10]
sub edi, dword [esp + 0x58]
add edi, dword [esp + 0xd4]
push 0
mov eax, dword [eax + 0x28]
push esi
mov esi, dword [esp + 0x20]
add eax, 0x120
push eax
mov eax, dword [esp + 0x58]
add eax, dword [esp + 0x4c]
add eax, dword [esp + 0xd4]
push 0
push 2
push edi
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
jmp 0x517dd1
mov eax, dword [esp + 0x10]
sub edi, dword [esp + 0x58]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
add edi, dword [esp + 0xdc]
push eax
push 0
push 2
push edi
jmp 0x517d51
mov esi, dword [esp + 0x18]
push dword [esp + 0x68]
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x38]
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax]
inc edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], edx
test eax, eax
jne 0x5173b0
mov al, byte [edi + ecx*8 + 4]
test al, al
je 0x517e23
test cl, 1
je 0x517e23
push esi
call dword [sym.imp.GDI32.dll_EndPage]
mov byte [esp + 0x2f], 0
mov edx, dword [esp + 0x1c]
inc edx
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x60]
jl 0x517350
jmp 0x517e46
cmp byte [esp + 0x2f], 0
je 0x517e4a
push esi
call dword [sym.imp.GDI32.dll_EndPage]
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x44], 0xa
jle 0x517e5e
mov eax, dword [ecx + 0x40]
push 0
push dword [eax]
call dword [sym.imp.USER32.dll_ShowWindow]
push edi
call fcn.00560853
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
add esp, 4
push dword [esp + 0x8c]
call esi
push dword [esp + 0x48]
call esi
push dword [esp + 0x64]
call esi
push dword [esp + 0x74]
call esi
mov eax, dword [esp + 0x14]
push dword [eax + 0x21b94]
call dword [sym.imp.GDI32.dll_EndDoc]
mov ecx, dword [esp + 0xaac]
pop edi
pop esi
xor ecx, esp
call fcn.0056060a
mov esp, ebp
pop ebp
ret 0x2c