Function at 0x439490
Capabilities:
Check if file exists
Create directory
Create process on windows
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
push 0x4a1628
lea ecx, [ebp - 8]
call fcn.00403710
mov edi, dword [ebp - 8]
mov ecx, 1
mov eax, dword [edi - 8]
sub ecx, dword [edi - 4]
sub eax, 0x105
or eax, ecx
jge 0x4394cd
push 0x105
lea ecx, [ebp - 8]
call fcn.004024d0
mov edi, dword [ebp - 8]
cmp dword [edi - 8], 0x105
jl 0x43994e
push 0x104
xor eax, eax
mov dword [edi - 0xc], 0x105
push edi
push eax
mov word [edi + 0x20a], ax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
call fcn.00402250
mov ecx, eax
test ecx, ecx
je 0x439958
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
push 0x5c
push edi
mov dword [ebp - 4], eax
call fcn.0044c2da
add esp, 8
test eax, eax
jne 0x439525
or eax, 0xffffffff
jmp 0x439529
sub eax, edi
sar eax, 1
xor esi, esi
add eax, 1
cmovns esi, eax
lea eax, [edi - 0x10]
mov dword [ebp - 0x1c], eax
cmp esi, dword [edi - 0xc]
jl 0x43954a
push eax
call fcn.00403380
add esp, 4
lea esi, [eax + 0x10]
jmp 0x439573
mov ecx, dword [eax]
test ecx, ecx
je 0x439559
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x439565
call fcn.00402250
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
push eax
push esi
push edi
lea ecx, [ebp - 0x18]
call fcn.00407360
mov esi, dword [ebp - 0x18]
push esi
lea eax, [ebp - 4]
push 0x4a4b34
push eax
call fcn.0041ad10
or ebx, 0xffffffff
add esp, 0xc
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43959f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 4]
mov ecx, dword [esi - 0xc]
mov dword [ebp - 0x10], ecx
test ecx, ecx
js 0x439962
mov eax, dword [esi - 8]
mov edx, 1
sub edx, dword [esi - 4]
sub eax, ecx
or eax, edx
jge 0x4395d0
push ecx
lea ecx, [ebp - 4]
call fcn.004024d0
mov esi, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
lea eax, [ecx + 1]
push eax
push esi
call fcn.0046b5d9
mov eax, dword [ebp - 0x10]
add esp, 8
cmp eax, dword [esi - 8]
jg 0x43994e
xor ecx, ecx
mov dword [esi - 0xc], eax
push 0x4a1628
mov word [esi + eax*2], cx
lea ecx, [ebp - 4]
push str.upgrade
call fcn.00404290
push str._rmup.exe
lea ecx, [ebp - 0x14]
call fcn.00407410
mov eax, dword [ebp - 4]
add eax, 0xfffffff0
mov dword [ebp - 0x18], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x43962b
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x439641
call fcn.00402250
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x43996c
mov eax, dword [ecx]
call dword [eax + 0xc]
mov esi, dword [ebp - 0x14]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
push dword [esi - 0xc]
push esi
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.0040f0b0
add esp, 0x14
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43967d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push str.OldVersion
lea ecx, [ebp - 0x14]
call fcn.00407410
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
test ecx, ecx
je 0x43969e
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x4396b4
call fcn.00402250
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x439976
mov eax, dword [ecx]
call dword [eax + 0xc]
mov esi, dword [ebp - 0x14]
add eax, 0x10
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
push dword [esi - 0xc]
push esi
push dword [eax - 0xc]
push eax
lea eax, [ebp - 8]
push eax
call fcn.0040f0b0
add esp, 0x14
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4396f0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov esi, dword [ebp - 0x10]
lea eax, [ebp - 0x14]
push esi
push eax
call fcn.00439d20
add esp, 8
call fcn.00402250
mov ecx, eax
test ecx, ecx
je 0x439980
mov eax, dword [ecx]
call dword [eax + 0xc]
push dword [ebp - 0x14]
add eax, 0x10
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
push str._rmup_s.exe
push eax
call fcn.0041ad10
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 8]
add esp, 0xc
push dword [eax - 0xc]
push eax
call fcn.00403910
push dword [ebp - 8]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call ebx
test eax, eax
je 0x439760
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call fcn.00402250
mov ecx, eax
test ecx, ecx
je 0x43998a
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 4], eax
call fcn.00402250
mov ecx, eax
test ecx, ecx
je 0x439994
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
push esi
mov dword [ebp - 0xc], eax
call ebx
test eax, eax
je 0x4397d9
push dword [ebp - 8]
lea eax, [ebp - 4]
push esi
push str.copy___s_____s_
push eax
call fcn.0041ad10
add esp, 0x10
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
push ecx
add eax, 0xfffffff0
mov ebx, esp
push eax
call fcn.00403380
add esp, 4
add eax, 0x10
mov dword [ebx], eax
call fcn.00438f20
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 8
push esi
call ebx
test eax, eax
je 0x4397f6
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push esi
call ebx
test eax, eax
jne 0x4397e0
push esi
call ebx
test eax, eax
jne 0x43987f
push esi
push edi
lea eax, [ebp - 4]
push str.copy___s_____s_
push eax
call fcn.0041ad10
mov edi, dword [ebp - 4]
lea eax, [ebp - 0xc]
add esp, 0x10
push eax
push ecx
lea eax, [edi - 0x10]
mov ebx, esp
push eax
call fcn.00403380
add esp, 4
add eax, 0x10
mov dword [ebx], eax
call fcn.00438f20
add esp, 8
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x439862
xor ebx, ebx
cmp ebx, 0x32
jge 0x43985d
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
push esi
inc ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x439844
cmp ebx, 0xa
jge 0x439882
push 5
push 0x4a1628
push dword [0x4c109c]
push esi
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x439882
mov edi, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
or ebx, 0xffffffff
add edx, 0xfffffff0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43989f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x4398b6
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x10]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4398d0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x14]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4398ea
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 8]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439904
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43991b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x18]
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439932
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x1c]
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x439947
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.00402080
push 0x80004005
call fcn.00402080
push 0x80070057
call fcn.00402080
push 0x80004005
call fcn.00402080
push 0x80004005
call fcn.00402080
push 0x80004005
call fcn.00402080
push 0x80004005
call fcn.00402080
push 0x80004005
call fcn.00402080
int3