Function at 0x415710
Capabilities:
Accept command line arguments
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1fc
mov eax, dword [0x41f018]
xor eax, esp
mov dword [esp + 0x1f8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov dword [0x41fe24], eax
push edi
lea eax, [esp + 0x168]
push eax
mov dword [esp + 0x16c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x415763
cmp dword [esp + 0x178], 2
mov byte [0x420069], 1
je 0x41576a
mov byte [0x420069], 0
call fcn.00411abb
lea esi, [esp + 0xc8]
call fcn.004095be
lea esi, [esp + 0x48]
call fcn.004095be
lea esi, [esp + 0x94]
call fcn.004095be
lea esi, [esp + 0x7c]
call fcn.004095be
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebx, eax
lea eax, [esp + 0x88]
call fcn.004095de
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0xcc]
lea ecx, [esp + 0x8c]
call fcn.00408e34
push dword [esp + 0x88]
call sub.MSVCR90.dll_free
pop ecx
lea esi, [esp + 0xbc]
call fcn.004095be
mov ecx, esi
call fcn.0040a35b
lea ecx, [esp + 0x48]
call fcn.0040998e
mov esi, ecx
call fcn.00409958
mov eax, esi
mov byte [esp + 0xe], 0
call fcn.00409175
test al, al
je 0x415824
mov ebx, dword [esp + 0x48]
add ebx, 4
mov edi, esi
mov byte [esp + 0xe], 1
call fcn.00409668
mov ecx, esi
call fcn.0040998e
call fcn.00409958
lea esi, [esp + 0xb0]
call fcn.004092ee
push dword [esp + 0xbc]
mov ecx, esi
call fcn.0041547f
test al, al
jne 0x4158b4
cmp byte [esp + 0xe], al
jne 0x415852
push str.Cant_load_config_info
call fcn.0040df25
push dword [esp + 0xb0]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0xbc]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x7c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x94]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x48]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0xc8]
call sub.MSVCR90.dll_free
xor eax, eax
pop ecx
inc eax
mov ecx, dword [esp + 0x204]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00416087
mov esp, ebp
pop ebp
ret 0x10
mov ebx, 0x41a1e4
lea eax, [esp + 0x88]
call fcn.0040960b
lea esi, [esp + 0x54]
call fcn.004095be
xor ebx, ebx
mov byte [esp + 0x6c], 1
cmp dword [esp + 0xb4], ebx
je 0x415b64
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0xb4]
push eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
call fcn.00409e44
test al, al
jne 0x4159b9
cmp byte [esp + 0xe], bl
jne 0x415918
push str.Config_failed
call fcn.0040df25
mov edi, dword [esp + 0x14]
jmp 0x415942
mov eax, dword [esp + 0x10]
dec edi
mov esi, dword [eax + edi*4]
cmp esi, ebx
je 0x415942
push dword [esi + 0xc]
call sub.MSVCR90.dll_free
pop ecx
push dword [esi]
call sub.MSVCR90.dll_free
pop ecx
push esi
call sub.MSVCR90.dll_free
pop ecx
cmp edi, ebx
jne 0x41591e
xor esi, esi
inc esi
push dword [esp + 0x10]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x54]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x88]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0xb0]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0xbc]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x7c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x94]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x48]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0xc8]
call sub.MSVCR90.dll_free
pop ecx
mov eax, esi
jmp 0x41589d
push str.Title
lea edi, [esp + 0x14]
lea eax, [esp + 0x30]
call fcn.0040a097
push str.BeginPrompt
lea eax, [esp + 0x20]
call fcn.0040a097
push 0x41a218
lea eax, [esp + 0x74]
call fcn.0040a097
mov eax, dword [esp + 0x70]
mov edx, 0x41a224
call fcn.004091d6
test al, al
je 0x4159fd
mov byte [esp + 0x6c], bl
push str.Directory
lea eax, [esp + 0x14]
call fcn.0040a063
cmp eax, ebx
jl 0x415a27
mov ecx, dword [esp + 0x10]
mov ebx, dword [ecx + eax*4]
add ebx, 0xc
lea esi, [esp + 0x88]
call fcn.004096c4
xor ebx, ebx
cmp dword [esp + 0x20], ebx
je 0x415a9b
cmp byte [esp + 0xe], bl
jne 0x415a9b
push 0x24
push dword [esp + 0x30]
push dword [esp + 0x24]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
je 0x415a9b
push dword [esp + 0x70]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x2c]
call sub.MSVCR90.dll_free
mov esi, dword [esp + 0x18]
jmp 0x415a8f
mov eax, dword [esp + 0x10]
dec esi
mov edi, dword [eax + esi*4]
cmp edi, ebx
je 0x415a90
push dword [edi + 0xc]
call sub.MSVCR90.dll_free
pop ecx
push dword [edi]
call sub.MSVCR90.dll_free
pop ecx
push edi
call sub.MSVCR90.dll_free
pop ecx
cmp esi, ebx
jne 0x415a6c
xor esi, esi
jmp 0x415949
push str.RunProgram
lea edi, [esp + 0x14]
lea eax, [esp + 0x64]
call fcn.0040a097
mov ebx, eax
lea esi, [esp + 0x54]
call fcn.004096c4
push dword [esp + 0x60]
call sub.MSVCR90.dll_free
lea eax, [esp + 0x64]
mov dword [esp], str.ExecuteFile
call fcn.0040a097
mov ebx, eax
lea esi, [esp + 0x94]
call fcn.004096c4
push dword [esp + 0x60]
call sub.MSVCR90.dll_free
lea eax, [esp + 0x64]
mov dword [esp], str.ExecuteParameters
call fcn.0040a097
mov ebx, eax
lea esi, [esp + 0x7c]
call fcn.004096c4
push dword [esp + 0x60]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x70]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x2c]
call sub.MSVCR90.dll_free
mov esi, dword [esp + 0x18]
jmp 0x415b53
mov eax, dword [esp + 0x10]
dec esi
mov edi, dword [eax + esi*4]
test edi, edi
je 0x415b54
push dword [edi + 0xc]
call sub.MSVCR90.dll_free
pop ecx
push dword [edi]
call sub.MSVCR90.dll_free
pop ecx
push edi
call sub.MSVCR90.dll_free
pop ecx
test esi, esi
jne 0x415b30
push dword [esp + 0x10]
call sub.MSVCR90.dll_free
pop ecx
xor ebx, ebx
lea esi, [esp + 0x3c]
mov byte [esp + 0x38], bl
call fcn.004095be
lea edi, [esp + 0x38]
call fcn.0040adea
test al, al
jne 0x415ba8
cmp byte [esp + 0xe], bl
jne 0x415b8e
push str.Can_not_create_temp_folder_archive
call fcn.0040df25
lea esi, [esp + 0x38]
call fcn.0040ae71
push dword [esp + 0x3c]
call sub.MSVCR90.dll_free
xor esi, esi
inc esi
jmp 0x415952
push 0x18
call fcn.00409b11
pop ecx
cmp eax, ebx
je 0x415bd4
mov dword [eax + 4], ebx
mov dword [eax], vtable.CCodecs.0
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
mov edi, eax
mov byte [eax + 0x14], bl
mov byte [eax + 0x15], bl
mov dword [esp + 0x28], edi
jmp 0x415bda
mov dword [esp + 0x28], ebx
mov edi, ebx
cmp edi, ebx
je 0x415be4
mov eax, dword [edi]
push edi
call dword [eax + 4]
mov ecx, edi
call fcn.0040e600
test eax, eax
je 0x415c05
push str.Can_not_load_codecs
call fcn.0040df25
cmp edi, ebx
je 0x415b8e
mov eax, dword [edi]
push edi
call dword [eax + 8]
jmp 0x415b8e
lea ebx, [esp + 0x3c]
lea eax, [esp + 0x10]
call fcn.00409643
xor ebx, ebx
lea esi, [esp + 0x1c]
mov byte [esp + 0xf], bl
call fcn.004095be
mov eax, esi
push eax
lea eax, [esp + 0x13]
push eax
push dword [esp + 0x74]
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0xcc]
push eax
push edi
call fcn.004150ba
cmp eax, ebx
je 0x415cd8
cmp byte [esp + 0xe], bl
jne 0x415cbf
cmp eax, 1
je 0x415c59
cmp byte [esp + 0xf], bl
je 0x415c69
push 8
lea ecx, [esp + 0x20]
call fcn.0040c55f
mov eax, 0x80004005
cmp eax, 0x80004004
je 0x415cbf
cmp dword [esp + 0x20], ebx
jne 0x415c97
push eax
lea ecx, [esp + 0x64]
call fcn.0040a4a9
mov ebx, eax
lea esi, [esp + 0x1c]
call fcn.004096c4
push dword [esp + 0x60]
call sub.MSVCR90.dll_free
pop ecx
xor ebx, ebx
push 7
lea edi, [esp + 0x64]
call fcn.0040c3e4
push 0x10
push dword [eax]
push dword [esp + 0x24]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
push dword [esp + 0x60]
call sub.MSVCR90.dll_free
mov edi, dword [esp + 0x2c]
pop ecx
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x10]
call sub.MSVCR90.dll_free
pop ecx
jmp 0x415bf9
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
pop ecx
lea esi, [esp + 0xa0]
call fcn.004095be
mov ecx, esi
mov byte [esp + 0xac], 1
call fcn.0040ab0c
mov eax, dword [esp + 0x10]
call fcn.0040aac5
test al, al
jne 0x415d19
lea eax, [esp + 0xa0]
push eax
call fcn.004153ed
jmp 0x415cc9
cmp dword [esp + 0x98], ebx
je 0x415e22
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.004153d1
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xd4], 0x3c
mov dword [esp + 0xd8], 0x140
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xe0], ebx
mov dword [esp + 0xe4], eax
cmp dword [esp + 0x4c], ebx
je 0x415d87
lea eax, [esp + 0x7c]
call fcn.0040982f
lea edi, [esp + 0x48]
lea esi, [esp + 0x7c]
call fcn.00409876
mov edi, dword [esp + 0x28]
lea eax, [esp + 0x7c]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.004153d1
mov eax, dword [esp + 0x20]
neg eax
sbb eax, eax
and eax, dword [esp + 0x1c]
mov dword [esp + 0xec], ebx
mov dword [esp + 0xe8], eax
lea eax, [esp + 0xd4]
push eax
mov dword [esp + 0xf4], 1
mov dword [esp + 0x110], ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
cmp dword [esp + 0xf4], 0x20
ja 0x415e03
cmp byte [esp + 0xe], bl
jne 0x415dea
push str.Can_not_open_file
call fcn.0040df25
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x2c]
call sub.MSVCR90.dll_free
pop ecx
jmp 0x415d0a
push dword [esp + 0x1c]
mov esi, dword [esp + 0x110]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x2c]
call sub.MSVCR90.dll_free
jmp 0x415ff2
cmp dword [esp + 0x58], ebx
jne 0x415e85
mov ebx, str.setup.exe
lea edi, [esp + 0x54]
call fcn.00409668
push dword [esp + 0x54]
call fcn.0040b6e5
test al, al
jne 0x415e81
cmp byte [esp + 0xe], al
jne 0x415e53
push str.Can_not_find_setup.exe
call fcn.0040df25
lea eax, [esp + 0xa0]
push eax
call fcn.004153ed
push dword [esp + 0x10]
call sub.MSVCR90.dll_free
mov eax, dword [esp + 0x2c]
pop ecx
test eax, eax
je 0x415b8e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x415b8e
mov edi, dword [esp + 0x28]
lea ebx, [esp + 0x10]
lea eax, [esp + 0x2c]
call fcn.00409643
lea eax, [esp + 0x2c]
call fcn.0040baf0
mov ebx, str.__T_
lea eax, [esp + 0x1c]
call fcn.004095de
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x5c]
call fcn.00409a02
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x2c]
call sub.MSVCR90.dll_free
pop ecx
lea ebx, [esp + 0x54]
lea eax, [esp + 0x2c]
call fcn.00409643
mov ebx, 0x41a344
lea eax, [esp + 0x1c]
call fcn.004095de
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x5c]
call fcn.00409a02
push dword [esp + 0x1c]
call sub.MSVCR90.dll_free
xor ebx, ebx
pop ecx
cmp dword [esp + 0x4c], ebx
je 0x415f26
lea esi, [esp + 0x54]
call fcn.00409827
lea edi, [esp + 0x48]
call fcn.00409876
mov edi, dword [esp + 0x28]
xor eax, eax
mov word [esp + 0x152], ax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x58]
lea ecx, [esp + 0x8c]
mov dword [esp + 0x124], 0x44
mov dword [esp + 0x128], ebx
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x130], ebx
mov dword [esp + 0x150], ebx
mov dword [esp + 0x158], ebx
call fcn.00409561
push eax
lea eax, [esp + 0x74]
push eax
call fcn.004153d1
push dword [esp + 0x60]
call sub.MSVCR90.dll_free
pop ecx
lea eax, [esp + 0x110]
push eax
lea eax, [esp + 0x124]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push dword [esp + 0x90]
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x415fc9
cmp byte [esp + 0xe], bl
jne 0x415fc0
lea eax, [esp + 0x2c]
push eax
call fcn.004156aa
push dword [esp + 0x70]
jmp 0x415dee
push dword [esp + 0x114]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [esp + 0x70]
mov esi, dword [esp + 0x114]
call sub.MSVCR90.dll_free
pop ecx
push dword [esp + 0x2c]
call sub.MSVCR90.dll_free
xor ebx, ebx
pop ecx
cmp esi, ebx
je 0x416007
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esp + 0xa0]
push eax
call fcn.004153ed
push dword [esp + 0x10]
call sub.MSVCR90.dll_free
pop ecx
cmp edi, ebx
je 0x416028
mov eax, dword [edi]
push edi
call dword [eax + 8]
lea esi, [esp + 0x38]
call fcn.0040ae71
push dword [esp + 0x3c]
call sub.MSVCR90.dll_free
xor esi, esi
jmp 0x415952