Function at 0x4083d0
Capabilities:
Check if file exists
Copy file
Move file
Read .ini file

Disassembly:
sub esp, 0xa9c
push ebx
push ebp
mov ebp, ecx
push edi
xor ebx, ebx
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x91]
mov byte [esp + 0x90], bl
mov word [esp + 0x4a0], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x4a2]
mov byte [esp + 0x298], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x299]
mov byte [esp + 0x194], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x195]
mov byte [esp + 0x6a8], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 0x6a9]
mov byte [esp + 0x50], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x51]
mov byte [esp + 0x10], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x11]
mov byte [esp + 0x39c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x39d]
mov dword [esp + 0xc], ebx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0xaac]
cmp eax, ebx
je 0x4084b2
mov dword [eax], ebx
push esi
lea esi, [ebp + 0x118]
push esi
lea eax, [esp + 0x58]
push 0x40
push eax
push ebx
push str.version
mov ecx, 0x41cd88
call fcn.00402260
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
call edi
test eax, eax
je 0x408717
push esi
lea ecx, [esp + 0x6b0]
push 0x400
push ecx
push ebx
push 0x418694
mov ecx, 0x41cd88
call fcn.00402260
push eax
call edi
test eax, eax
je 0x408717
lea edx, [esp + 0x94]
push 0x104
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x40857e
lea eax, [esp + 0x14]
push 0x40
lea ecx, [esp + 0x98]
push eax
push ecx
call fcn.0040aed0
add esp, 0xc
test eax, eax
je 0x40857e
lea edx, [esp + 0x14]
push 1
lea eax, [esp + 0x58]
push edx
push eax
mov byte [esp + 0xa0], bl
call fcn.0040b410
add esp, 0xc
test eax, eax
jg 0x408567
mov ebx, 1
jmp 0x40871b
mov ecx, dword [esp + 0xab0]
mov dword [ecx], 1
mov dword [ebp + 0x21c], 1
lea edx, [ebp + 0x220]
push 0x104
lea eax, [esp + 0x98]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea ecx, [esp + 0x94]
push str.SOSOUpdate.exe
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
push esi
lea edx, [esp + 0x3a4]
push 0x104
push edx
push ebx
push str.general
mov ecx, 0x41cd88
call fcn.00402260
push eax
call edi
test eax, eax
je 0x408717
lea eax, [esp + 0x3a0]
lea ecx, [esp + 0x94]
push eax
lea edx, [esp + 0x6b0]
push ecx
push edx
mov ecx, ebp
call fcn.00408df0
test eax, eax
je 0x408717
lea eax, [esp + 0x4a4]
push 0x104
push eax
lea ecx, [esp + 0x9c]
push 0xffffffffffffffff
push ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x40871b
lea edx, [esp + 0x4a4]
push edx
call fcn.00406b10
test eax, eax
je 0x40871b
cmp dword [ebp + 4], ebx
jne 0x408717
lea eax, [esp + 0x29c]
push 0x104
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x40871b
lea ecx, [esp + 0x29c]
push 0x104
lea edx, [esp + 0x19c]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea eax, [esp + 0x198]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
lea ecx, [esp + 0x198]
push 0x418290
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExA]
lea edx, [esp + 0x198]
push 1
lea eax, [esp + 0x2a0]
push edx
push eax
call esi
test eax, eax
je 0x40871b
lea ecx, [esp + 0x29c]
push ebx
lea edx, [esp + 0x98]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
lea eax, [esp + 0x94]
push 1
push eax
jne 0x4086f9
call fcn.004023d0
add esp, 8
lea ecx, [esp + 0x29c]
lea edx, [esp + 0x198]
push 2
push ecx
push edx
call esi
jmp 0x40871b
call fcn.004023d0
lea ecx, [esp + 0x1a0]
push 1
push ecx
call fcn.004023d0
add esp, 0x10
mov ebx, 1
jmp 0x40871b
mov ebx, dword [esp + 0x10]
lea edx, [esp + 0x94]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
pop esi
je 0x408740
lea eax, [esp + 0x90]
push 1
push eax
call fcn.004023d0
add esp, 8
pop edi
mov eax, ebx
pop ebp
pop ebx
add esp, 0xa9c
ret 4