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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xdd0
push ebx
push esi
mov ebx, ecx
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x107]
mov byte [ebp - 0x108], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor edx, edx
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x5be]
mov word [ebp - 0x5c0], dx
mov byte [ebp - 0x2b4], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x41
xor eax, eax
lea edi, [ebp - 0x2b3]
mov byte [ebp - 0x9c0], dl
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x9bf]
mov byte [ebp - 0x148], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xf
xor eax, eax
lea edi, [ebp - 0x147]
mov byte [ebp - 0x3b8], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x3b7]
mov dword [ebp - 4], edx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp + 8]
cmp eax, edx
je 0x4099ab
mov dword [eax], edx
mov eax, dword [ebp + 0xc]
mov ecx, 0x41d098
push eax
call fcn.00402a40
push eax
lea ecx, [ebp - 0x1ac]
push str._s_d
push ecx
call sub.MSVCRT.dll_sprintf
add esp, 0x10
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea esi, [ebx + 0x14]
lea edx, [ebp - 0x148]
push esi
push 0x40
push edx
push 0
lea eax, [ebp - 0x1ac]
push str.version
push eax
call edi
test eax, eax
je 0x409ca1
push esi
lea ecx, [ebp - 0x9c0]
push 0x400
push ecx
push 0
lea edx, [ebp - 0x1ac]
push 0x418924
push edx
call edi
test eax, eax
je 0x409ca1
call fcn.00402db0
test eax, eax
je 0x409ac2
lea eax, [ebx + 0x220]
push 0x104
lea ecx, [ebp - 0x108]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea edx, [ebp - 0x2b4]
push 0x104
push edx
push 0x10
call fcn.004079f0
add esp, 0xc
lea eax, [ebp - 0x2b4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea ecx, [ebp - 0x2b4]
push str.Update
push ecx
call edi
lea edx, [ebp - 0x2b4]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x409aa4
push eax
lea eax, [ebp - 0x2b4]
push eax
call fcn.00403d80
add esp, 8
test eax, eax
je 0x409ca1
lea ecx, [ebp - 0x108]
push str.Setup.exe
push ecx
call edi
lea edx, [ebp - 0x2b4]
push str.Setup.exe
push edx
call edi
jmp 0x409b05
push 0x418914
push 0
call sub.MSVCRT.dll__tempnam
add esp, 8
mov edi, eax
lea eax, [ebp - 0x108]
push 0x104
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push edi
call sub.MSVCRT.dll_free
push 0x104
lea ecx, [ebp - 0x108]
push str..exe
push ecx
call fcn.00402df0
add esp, 0x10
push esi
lea edx, [ebp - 0x3b8]
push 0x104
push edx
push 0
lea eax, [ebp - 0x1ac]
push str.general
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
je 0x409ca1
lea ecx, [ebp - 0x3b8]
lea edx, [ebp - 0x108]
push ecx
lea eax, [ebp - 0x9c0]
push edx
push eax
mov ecx, ebx
call fcn.0040acf0
test eax, eax
je 0x409ca1
lea ecx, [ebp - 0x5c0]
push 0x104
push ecx
lea edx, [ebp - 0x108]
push 0xffffffffffffffff
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x409ca1
lea eax, [ebp - 0x5c0]
push eax
call fcn.00408410
test eax, eax
je 0x409ca1
mov eax, dword [ebx + 4]
test eax, eax
jne 0x409ca1
mov eax, dword [ebp + 8]
test eax, eax
je 0x409ba5
mov dword [eax], 1
call fcn.00402db0
test eax, eax
je 0x409bf6
lea ecx, [ebp - 0x2b4]
push 0
lea edx, [ebp - 0x108]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x409ca1
lea eax, [ebp - 0x108]
push 1
push eax
call fcn.004033b0
add esp, 8
lea ecx, [ebp - 0x2b4]
lea edx, [ebp - 0x108]
push 0x104
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
mov ecx, 0x103
xor eax, eax
lea edi, [ebp - 0xdce]
mov word [ebp - 0xdd0], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [ebp - 0x108]
test eax, eax
jne 0x409c1e
xor edi, edi
jmp 0x409c57
lea ecx, [ebp - 0x108]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.0040ee00
mov edi, esp
push esi
push edi
lea edx, [ebp - 0x108]
push 0xffffffffffffffff
push edx
push 0
push 0
mov word [edi], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push str._update
push edi
push str.__s___s
lea eax, [ebp - 0xdd0]
push 0x207
push eax
call sub.MSVCRT.dll__snwprintf
lea ecx, [ebp - 0xdd0]
push 0xea60
push ecx
push 0
call fcn.0040aa70
add esp, 0x20
test eax, eax
jne 0x409c9a
mov eax, dword [ebp + 8]
test eax, eax
je 0x409c9a
mov dword [eax], 1
mov dword [ebp - 4], 1
lea edx, [ebp - 0x108]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x409cc3
lea eax, [ebp - 0x108]
push 1
push eax
call fcn.004033b0
add esp, 8
mov eax, dword [ebp - 4]
lea esp, [ebp - 0xddc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8