Function at 0x408ca0
Capabilities:
Check if file exists
Copy file
Create directory
Create process on windows
Get disk size
Get file attributes
Get number of processors
Hide graphical window
Terminate thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x43331f
mov eax, dword fs:[0]
push eax
sub esp, 0x268
mov eax, dword [0x448620]
xor eax, esp
mov dword [esp + 0x260], eax
push ebx
push esi
push edi
mov eax, dword [0x448620]
xor eax, esp
push eax
lea eax, [esp + 0x278]
mov dword fs:[0], eax
mov edi, edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x30], ecx
call fcn.00404cf0
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0
call esi
mov ecx, eax
call fcn.004050a0
lea ecx, [esp + 0x2c]
call fcn.0040ba50
mov dword [esp + 0x280], 0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x409806
mov ecx, dword [0x44d7d4]
cmp dword [ecx - 0xc], 0
jl 0x409806
push eax
push ecx
call fcn.0041b7f4
add esp, 8
test eax, eax
je 0x409802
sub eax, dword [0x44d7d4]
sar eax, 1
js 0x409802
mov cl, 1
call fcn.00405ab0
call fcn.00405370
call fcn.0040a000
test al, al
jne 0x408d89
mov dword [esp + 0x280], 0xffffffff
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jmp 0x409a59
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov byte [esp + 0x280], 4
call fcn.00405950
mov eax, dword [0x44d828]
cmp dword [eax - 0xc], 0
jne 0x408e4d
push dword [0x44d7ec]
call fcn.0041c7c6
add esp, 4
cmp eax, 1
je 0x408dcd
cmp eax, 2
jne 0x408df7
cmp dword [esp + 0x40], 0
jne 0x408deb
push 0
push 0
push 0
push 0
lea eax, [esp + 0x4c]
push eax
push 0x408bb0
call fcn.0040f22a
push 5
push dword [esp + 0x40]
call dword [sym.imp.USER32.dll_ShowWindow]
call fcn.0040bbc0
test al, al
jne 0x408e4d
xor cl, cl
call fcn.00405ab0
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x408e18
push 0
push eax
call dword [sym.imp.USER32.dll_EndDialog]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x408e29
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
mov dword [esp + 0x280], 0xffffffff
or ecx, 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jmp 0x409a59
mov ecx, 1
call fcn.00406cf0
call fcn.00405d50
mov ecx, dword [0x44d7d8]
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x24], 0
push eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x3c], 0
push eax
lea edx, [esp + 0x2c]
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0
call fcn.004083c0
add esp, 0xc
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x408eb9
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0x280], 5
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x408eeb
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [esp + 0x48], ebx
mov byte [esp + 0x280], 6
movzx eax, word [esp + 0x10]
push eax
movzx eax, word [esp + 0x1c]
push eax
movzx eax, word [esp + 0x3c]
push eax
movzx eax, word [esp + 0x2c]
push eax
lea eax, [esp + 0x38]
push str.Started_EpicScale.exe:__d._d._d._d
push eax
call fcn.004074e0
xor esi, esi
add esp, 0x18
cmp dword [esp + 0x30], esi
jle 0x408f60
push dword [edi + esi*4]
lea eax, [esp + 0x4c]
push str.__s_
push eax
call fcn.004074e0
mov ebx, dword [esp + 0x54]
lea ecx, [esp + 0x34]
add esp, 0xc
push dword [ebx - 0xc]
push ebx
call fcn.00404400
inc esi
cmp esi, dword [esp + 0x30]
jl 0x408f33
mov edx, 0x44d828
lea ecx, [esp + 0x28]
call fcn.00407d50
mov eax, dword [0x44d7e8]
cmp dword [eax - 0xc], 0
jl 0x408fc1
push 0x440e50
push eax
call fcn.0041b7f4
mov ecx, eax
add esp, 8
mov eax, dword [0x44d7e8]
test ecx, ecx
je 0x408f98
sub ecx, eax
sar ecx, 1
jns 0x408fc1
cmp dword [eax - 0xc], 0
jl 0x408fc1
push 0x440e58
push eax
call fcn.0041b7f4
add esp, 8
test eax, eax
je 0x408fc1
sub eax, dword [0x44d7e8]
sar eax, 1
js 0x408fc1
mov eax, 1
jmp 0x408fc3
xor eax, eax
mov ecx, 2
mov dword [0x44d728], eax
call fcn.00406cf0
call fcn.00406700
mov ecx, 3
call fcn.00406cf0
or edi, 0xffffffff
jmp 0x408ff0
push str.GetDiskFreeSpaceExA
push 0x43f928
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x409037
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x60]
push ecx
lea ecx, [esp + 0x54]
push ecx
push 0
call eax
test eax, eax
je 0x4090a4
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
shrd esi, eax, 0x14
shr eax, 0x14
jmp 0x409099
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x28]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
je 0x4090a4
mov eax, dword [esp + 0x1c]
mul dword [esp + 0x20]
mov esi, edx
mov edi, eax
push esi
push edi
push 0
push dword [esp + 0x40]
call fcn.004204b0
push esi
push edi
push 0
push dword [esp + 0x24]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
call fcn.004204b0
mov esi, eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], esi
shrd esi, edx, 0x14
shr edx, 0x14
or edi, 0xffffffff
cmp esi, 0x64
jge 0x409195
jmp 0x4090a6
xor esi, esi
call fcn.0040ca7a
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x408eaf
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
push esi
lea eax, [esp + 0x14]
mov byte [esp + 0x284], 7
push str.Error:_Not_enough_disk_space_available:__d_MB_nFree_some_space_and_click_OK_or_click_Cancel_to_continue_as_is
push eax
call fcn.004074e0
mov esi, dword [esp + 0x1c]
mov ecx, 1
add esp, 0xc
sub ecx, dword [esi - 4]
mov eax, dword [esi - 8]
or eax, ecx
jge 0x409105
push 0
lea ecx, [esp + 0x14]
call fcn.004031e0
mov esi, dword [esp + 0x10]
xor edx, edx
mov ecx, esi
call fcn.00407970
push 1
push 0x43f398
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 2
je 0x40914d
add esi, 0xfffffff0
mov byte [esp + 0x280], 6
mov ecx, edi
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x408ff0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x408ff0
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
or eax, ecx
jge 0x40916b
push 0
lea ecx, [esp + 0x14]
call fcn.004031e0
mov esi, dword [esp + 0x10]
xor edx, edx
mov ecx, esi
call fcn.00407970
add esi, 0xfffffff0
mov byte [esp + 0x280], 6
mov ecx, edi
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409195
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4091b1
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x18], eax
push str.Nova
mov byte [esp + 0x284], 8
lea eax, [esp + 0x1c]
push dword [0x44d7d4]
push str._s_s.dat
push eax
call fcn.004074e0
add esp, 0x10
mov dword [esp + 0x10], 0x3e8
lea esp, [esp]
mov esi, dword [esp + 0x18]
mov ecx, 1
sub ecx, dword [esi - 4]
mov eax, dword [esi - 8]
or eax, ecx
jge 0x409212
push 0
lea ecx, [esp + 0x1c]
call fcn.004031e0
mov esi, dword [esp + 0x18]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x409239
sub esp, 8
lea ecx, [esp + 0x20]
call fcn.004024f0
add esp, 8
test al, al
jne 0x40939d
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.00405c30
push 0x43f7a4
lea ecx, [esp + 0x20]
call fcn.00405250
add esp, 4
mov byte [esp + 0x280], 9
add esi, 0xfffffff0
mov eax, dword [eax]
lea edi, [eax - 0x10]
cmp edi, esi
je 0x409313
cmp dword [esi + 0xc], 0
jl 0x409306
mov ecx, dword [edi]
cmp ecx, dword [esi]
jne 0x409306
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [edi + 0xc], 0
lea edx, [edi + 0xc]
mov ecx, eax
jl 0x4092a0
cmp ecx, dword [edi]
jne 0x4092a0
mov dword [esp + 0x20], edi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x4092e0
mov eax, dword [ecx]
push 2
push dword [edi + 4]
call dword [eax]
mov edx, eax
mov dword [esp + 0x20], edx
test edx, edx
je 0x4097f6
mov ecx, dword [edi + 4]
mov dword [edx + 4], ecx
mov ecx, dword [edi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0041b5ce
add esp, 0x10
or edi, 0xffffffff
lea ecx, [esi + 0xc]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4092f9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x20]
add eax, 0x10
mov dword [esp + 0x18], eax
jmp 0x409316
push dword [eax - 0xc]
lea ecx, [esp + 0x1c]
push eax
call fcn.004032e0
or edi, 0xffffffff
mov byte [esp + 0x280], 8
mov ecx, edi
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40933b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [esp + 0x18]
call fcn.0040a510
test al, al
je 0x40937e
push 0
push 0
push 0
lea edx, [esp + 0x2c]
mov dword [esp + 0x2c], 0
lea ecx, [esp + 0x24]
call fcn.00408800
add esp, 0xc
cmp eax, 1
je 0x4097fb
mov ecx, eax
call fcn.0040bf80
cmp al, 1
je 0x4097fb
mov esi, dword [esp + 0x10]
push esi
call dword [sym.imp.KERNEL32.dll_Sleep]
add esi, 0xbb8
mov dword [esp + 0x10], esi
call fcn.00406700
jmp 0x4091f0
push 0
push dword [esp + 0x40]
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, 4
call fcn.00406cf0
push 0x43f398
lea ecx, [esp + 0x28]
call fcn.00403430
mov byte [esp + 0x280], 0xa
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4093e5
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
mov byte [esp + 0x280], 0xb
mov edx, dword [esp + 0x44]
test edx, edx
je 0x40949a
cmp dword [esp + 0x30], 1
jle 0x40949a
mov edx, dword [edx + 4]
test edx, edx
jne 0x40941d
xor ecx, ecx
jmp 0x409431
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409422
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [esp + 0x2c]
call fcn.004032e0
lea eax, [esp + 0x24]
push str.checkfxn
push eax
call fcn.00406f90
add esp, 8
test al, al
je 0x409459
push str.EpicScaleCP
jmp 0x409491
lea eax, [esp + 0x24]
push str.test
push eax
call fcn.00406f90
add esp, 8
test al, al
je 0x409476
push str.EpicScaleCU
jmp 0x409491
lea eax, [esp + 0x24]
push str.reconnect
push eax
call fcn.00406f90
add esp, 8
test al, al
je 0x40949a
push str.EpicScaleSG
lea ecx, [esp + 0x28]
call fcn.004033e0
mov eax, dword [esp + 0x24]
cmp dword [eax - 0xc], 0
jge 0x4094a9
or ecx, 0xffffffff
jmp 0x4094ca
push str..dll
push eax
call fcn.0041b7f4
mov ecx, eax
add esp, 8
mov eax, dword [esp + 0x24]
test ecx, ecx
jne 0x4094c6
or ecx, 0xffffffff
jmp 0x4094ca
sub ecx, eax
sar ecx, 1
test ecx, ecx
setg cl
mov byte [esp + 0x17], cl
test cl, cl
je 0x4094e7
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x14]
call fcn.00404be0
jmp 0x409500
push eax
push dword [0x44d7d4]
lea eax, [esp + 0x18]
push str._s_s.dat
push eax
call fcn.004074e0
add esp, 0x10
lea eax, [esp + 0x10]
mov ecx, 0x44d87c
push eax
call fcn.00404be0
mov esi, dword [esp + 0x10]
mov ecx, str.yam.dll
mov eax, esi
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x409546
test dx, dx
je 0x409542
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x409546
add eax, 4
add ecx, 4
test dx, dx
jne 0x409520
xor eax, eax
jmp 0x40954b
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
je 0x409568
push 0
push 0
push 0
push 0
push 0
push 0x408a10
call fcn.0040f22a
mov ecx, 5
call fcn.00406cf0
push esi
mov dword [esp + 0x20], 0
mov dword [esp + 0x38], 1
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
setne al
mov byte [esp + 0x3b], al
test al, al
je 0x4095b5
cmp byte [esp + 0x17], 0
jne 0x4095f0
sub esp, 8
lea ecx, [esp + 0x18]
call fcn.004024f0
add esp, 8
test al, al
jne 0x4095f0
mov esi, dword [esp + 0x10]
mov byte [esp + 0x17], 0
mov byte [esp + 0x20], 0
mov ecx, 6
call fcn.00406cf0
cmp byte [esp + 0x20], 0
jne 0x4096f4
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40962c
push 0x80004005
call fcn.00403290
push dword [ebp + 8]
lea edx, [esp + 0x20]
mov byte [esp + 0x1b], 1
push 0x44d73c
push 0
lea ecx, [esp + 0x1c]
call fcn.00408800
mov esi, dword [esp + 0x1c]
mov ecx, eax
movzx eax, byte [esp + 0x23]
xor edx, edx
add esp, 0xc
mov dword [esp + 0x34], ecx
cmp ecx, 1
cmovne eax, edx
mov dword [esp + 0x20], eax
jmp 0x4095bf
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x30], eax
cmp byte [esp + 0x3b], 0
mov byte [esp + 0x280], 0xc
jne 0x409650
mov eax, 1
jmp 0x40965c
xor eax, eax
cmp byte [esp + 0x17], al
setne al
add eax, 2
push dword [esp + 0x34]
push eax
push esi
lea eax, [esp + 0x3c]
push str.Error:_RUNDLL3_failed_Exe:__s_reason___d_err___d
push eax
call fcn.004074e0
mov edi, dword [esp + 0x44]
mov ecx, 1
add esp, 0x14
sub ecx, dword [edi - 4]
mov eax, dword [edi - 8]
or eax, ecx
jge 0x409696
push 0
lea ecx, [esp + 0x34]
call fcn.004031e0
mov edi, dword [esp + 0x30]
xor edx, edx
mov ecx, edi
call fcn.00407970
mov ecx, esi
call fcn.00405c30
push 0
push 0
push 0
lea edx, [esp + 0x50]
mov dword [esp + 0x50], 0
lea ecx, [esp + 0x24]
call fcn.00408800
add esp, 0xc
cmp eax, 1
je 0x4096d0
mov ecx, eax
call fcn.0040bf80
lea edx, [edi - 0x10]
mov byte [esp + 0x280], 0xb
or edi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4096f4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [esp + 0x280], 0xa
mov ecx, edi
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409715
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x280], 8
mov ecx, edi
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40973a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x280], 6
mov ecx, edi
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40975f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [esp + 0x280], 5
mov ecx, edi
lea eax, [ebx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409780
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x280], 4
mov ecx, edi
mov edx, dword [esp + 0x28]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4097a5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4097b6
push 0
push eax
call dword [sym.imp.USER32.dll_EndDialog]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4097c7
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
mov dword [esp + 0x280], 0xffffffff
mov esi, dword [esp + 0x2c]
add esi, 0xfffffff0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x4097ed
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
jmp 0x409a65
call fcn.00403190
push 0
call fcn.0041d1cc
mov eax, dword [esp + 0x2c]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40982b
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0x280], 1
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40985d
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
push 0x43f5f0
mov byte [esp + 0x284], 2
lea eax, [esp + 0x2c]
push dword [esp + 0x30]
push str._s_s
push eax
call fcn.004074e0
push str.Nova
push dword [esp + 0x40]
lea eax, [esp + 0x28]
push str._s_s.dat
push eax
call fcn.004074e0
mov edi, dword [esp + 0x48]
mov ebx, 1
mov ecx, ebx
add esp, 0x20
sub ecx, dword [edi - 4]
mov eax, dword [edi - 8]
or eax, ecx
jge 0x4098ca
push 0
lea ecx, [esp + 0x2c]
call fcn.004031e0
mov edi, dword [esp + 0x28]
mov ecx, edi
call fcn.00405c30
push 0x208
lea eax, [esp + 0x68]
push eax
push 0
call esi
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0
push edi
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4099c0
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call fcn.0040ca7a
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x409920
push 0x80004005
call fcn.00403290
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x280], 3
cmp dword [0x44d728], 2
push edi
sbb ecx, ecx
and ecx, dword [0x44d728]
imul eax, ecx, 0x98
mov dword [0x44d728], ecx
lea ecx, [esp + 0x68]
push ecx
push esi
push dword [eax + 0x43ec60]
lea eax, [esp + 0x2c]
push eax
call fcn.004074e0
mov esi, dword [esp + 0x30]
add esp, 0x14
push 0
push str.EpicScale_upgrade
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea edx, [esi - 0x10]
mov byte [esp + 0x280], 2
or esi, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, esi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4099a3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x280], 1
mov ecx, esi
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jmp 0x409a12
mov esi, dword [esp + 0x10]
sub ebx, dword [esi - 4]
mov eax, dword [esi - 8]
or eax, ebx
jge 0x4099dd
push 0
lea ecx, [esp + 0x14]
call fcn.004031e0
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.00405c30
push 5
push 0
push 0
push edi
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
lea edx, [esi - 0x10]
mov byte [esp + 0x280], 1
or esi, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, esi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x409a1c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [esp + 0x280], 0
mov ecx, esi
lea eax, [edi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x409a3d
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x280], 0xffffffff
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x409a63
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
mov ecx, dword [esp + 0x278]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0041b38f
mov esp, ebp
pop ebp
ret