Function at 0x408bc0
Capabilities:
Accept command line arguments
Check if file exists
Create directory
Create process on windows
Delete file
Get file attributes
Resolve function by parsing pe exports
Set console window title

Disassembly:
sub esp, 0x188
mov eax, dword [0x4160f0]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x194], eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, eax
xor ebx, ebx
mov edi, 7
push esi
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], ebx
mov word [esp + 0xd8], bx
call fcn.00409a7d
add esp, 4
push eax
push esi
lea ecx, [esp + 0xd8]
call fcn.00402010
lea eax, [esp + 0xd0]
push eax
lea ecx, [esp + 0x10c]
push ecx
call fcn.004023f0
mov eax, dword [esp + 0xf0]
mov ebp, 8
add esp, 8
cmp eax, ebp
jb 0x408c4a
mov edx, dword [esp + 0xd4]
push edx
call fcn.00409ad2
add esp, 4
push 0x4130f0
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], ebx
mov word [esp + 0xd8], bx
call fcn.00409a7d
add esp, 4
push eax
push 0x4130f0
lea ecx, [esp + 0xd8]
call fcn.00402010
lea eax, [esp + 0xd0]
push eax
lea ecx, [esp + 0x10c]
push ecx
call fcn.00402840
mov esi, eax
mov eax, dword [esp + 0xf0]
add esp, 8
cmp eax, ebp
jb 0x408cb4
mov edx, dword [esp + 0xd4]
push edx
call fcn.00409ad2
add esp, 4
cmp esi, ebx
je 0x408ced
push 0x40
push str.DirectX_Installer
push str.DirectX_End_User_Runtimes__June_2010__Installer_n_n_____this_window_n_y___auto_install_n_u___uninstall__not_recommended_
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp dword [esp + 0x120], ebp
jb 0x40959f
mov eax, dword [esp + 0x10c]
push eax
call fcn.00409ad2
add esp, 4
jmp 0x40959f
call fcn.00401010
test eax, eax
je 0x408d28
push 0x10
push ebx
push str.This_package_requires_Windows_XP_SP2_or_later
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp dword [esp + 0x120], ebp
jb 0x408d1e
mov ecx, dword [esp + 0x10c]
push ecx
call fcn.00409ad2
add esp, 4
mov eax, 1
jmp 0x4095a1
push 0x412f78
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], ebx
mov word [esp + 0xd8], bx
call fcn.00409a7d
add esp, 4
push eax
push 0x412f78
lea ecx, [esp + 0xd8]
call fcn.00402010
lea edx, [esp + 0xd0]
push edx
lea eax, [esp + 0x10c]
push eax
call fcn.00402840
mov esi, eax
mov eax, dword [esp + 0xf0]
add esp, 8
cmp eax, ebp
jb 0x408d92
mov ecx, dword [esp + 0xd4]
push ecx
call fcn.00409ad2
add esp, 4
cmp esi, ebx
je 0x408f3b
call fcn.00402a20
test eax, eax
mov eax, str.Sysnative
jne 0x408dad
mov eax, str.System32
push eax
lea ecx, [esp + 0x18]
call fcn.00402460
push str.WINDIR
lea ecx, [esp + 0x50]
call fcn.00402460
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x38]
push ecx
call fcn.00402950
add esp, 8
push eax
lea edx, [esp + 0xd8]
push edx
call fcn.00402c30
mov eax, dword [esp + 0x54]
add esp, 0xc
cmp eax, ebp
jb 0x408e02
mov eax, dword [esp + 0x34]
push eax
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0x64], ebp
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x408e22
mov ecx, dword [esp + 0x50]
push ecx
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0x2c], ebp
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], ebx
mov word [esp + 0x50], bx
jb 0x408e42
mov edx, dword [esp + 0x18]
push edx
call fcn.00409ad2
add esp, 4
push str.rundll32.exe_advpack.dll_LaunchINFSection_DXeurt.inf_Uninstall
lea ecx, [esp + 0x34]
call fcn.00402460
push str.rundll32.exe
lea ecx, [esp + 0x50]
call fcn.00402460
push ebx
lea eax, [esp + 0xd4]
push eax
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x58]
push edx
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.00402c30
add esp, 0xc
push eax
call fcn.00401960
mov esi, eax
mov eax, dword [esp + 0x3c]
add esp, 0x10
cmp eax, ebp
jb 0x408e9f
mov edx, dword [esp + 0x18]
push edx
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0x64], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebx
mov word [esp + 0x18], bx
jb 0x408ebf
mov eax, dword [esp + 0x50]
push eax
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0x48], ebp
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], ebx
mov word [esp + 0x50], bx
jb 0x408edf
mov ecx, dword [esp + 0x34]
push ecx
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0xe8], ebp
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
jb 0x408f05
mov edx, dword [esp + 0xd4]
push edx
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0x120], ebp
mov dword [esp + 0xe8], edi
mov dword [esp + 0xe4], ebx
mov word [esp + 0xd4], bx
jb 0x408f34
mov eax, dword [esp + 0x10c]
push eax
call fcn.00409ad2
add esp, 4
mov eax, esi
jmp 0x4095a1
push 0x412e9c
lea ecx, [esp + 0x18]
call fcn.00402460
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x10c]
push edx
call fcn.00402840
mov esi, eax
mov eax, dword [esp + 0x34]
add esp, 8
cmp eax, ebp
mov dword [esp + 0x78], esi
jb 0x408f79
mov eax, dword [esp + 0x18]
push eax
call fcn.00409ad2
add esp, 4
cmp esi, ebx
jne 0x408fab
push 4
push str.DirectX_Installer
push str.This_will_install_DirectX_End_User_Runtimes__June_2010_._nDo_you_wish_to_continue_
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
je 0x408fab
lea ecx, [esp + 0x108]
call fcn.004015b0
mov eax, 1
jmp 0x4095a1
push str.DX_Installer
lea ecx, [esp + 0x18]
call fcn.00402460
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00403af0
add esp, 4
push eax
lea eax, [esp + 0xf4]
push eax
call fcn.00402c30
add esp, 0xc
lea ecx, [esp + 0x30]
call fcn.004015b0
lea ecx, [esp + 0x14]
call fcn.004015b0
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0xf4]
push ecx
lea ecx, [esp + 0x14c]
mov dword [esp + 0x164], edi
mov dword [esp + 0x160], ebx
mov word [esp + 0x150], bx
call fcn.00401e10
mov esi, 1
cmp dword [esp + 0x104], ebp
mov eax, dword [esp + 0xf0]
jae 0x409037
lea eax, [esp + 0xf0]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4090be
mov eax, esi
cdq
push edx
push eax
lea edx, [esp + 0x38]
push edx
call fcn.004028c0
push eax
lea eax, [esp + 0x150]
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004025e0
add esp, 0x18
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0xf8]
call fcn.00401e10
cmp dword [esp + 0x2c], ebp
jb 0x40908b
mov edx, dword [esp + 0x18]
push edx
call fcn.00409ad2
add esp, 4
cmp dword [esp + 0x48], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebx
mov word [esp + 0x18], bx
jb 0x4090ab
mov eax, dword [esp + 0x34]
push eax
call fcn.00409ad2
add esp, 4
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
inc esi
jmp 0x409020
cmp dword [esp + 0x104], ebp
mov eax, dword [esp + 0xf0]
jae 0x4090d5
lea eax, [esp + 0xf0]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x409114
push str.Couldnt_create_a_temp_directory
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], ebx
mov word [esp + 0x1c], bx
call fcn.00409a7d
add esp, 4
push eax
push str.Couldnt_create_a_temp_directory
lea ecx, [esp + 0x1c]
call fcn.00402010
lea ecx, [esp + 0x14]
push ecx
call fcn.00403910
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0xf4]
push edx
mov ecx, 0x416098
call fcn.00401e10
push str.DXeurt.inf
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebx
mov word [esp + 0x38], bx
call fcn.00409a7d
add esp, 4
push eax
push str.DXeurt.inf
lea ecx, [esp + 0x38]
call fcn.00402010
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0xf0]
push ecx
lea edx, [esp + 0x1c]
push edx
call fcn.00402c30
push eax
push 0x66
call fcn.00401450
mov ecx, dword [esp + 0x40]
add esp, 0x14
neg eax
sbb al, al
inc al
cmp ecx, ebp
mov byte [esp + 0x13], al
jb 0x409197
mov eax, dword [esp + 0x18]
push eax
call fcn.00409ad2
mov al, byte [esp + 0x17]
add esp, 4
cmp dword [esp + 0x48], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebx
mov word [esp + 0x18], bx
jb 0x4091bb
mov ecx, dword [esp + 0x34]
push ecx
call fcn.00409ad2
mov al, byte [esp + 0x17]
add esp, 4
cmp al, bl
lea ecx, [esp + 0x14]
je 0x4091d7
push str.Couldnt_extract_data
call fcn.00402460
lea edx, [esp + 0x14]
push edx
call fcn.00403910
push 0x412d3c
call fcn.00402460
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0xf0]
push ecx
lea edx, [esp + 0x12c]
push edx
call fcn.00402c30
mov eax, dword [esp + 0x38]
add esp, 0xc
cmp eax, ebp
jb 0x409213
mov eax, dword [esp + 0x18]
push eax
call fcn.00409ad2
add esp, 4
lea ecx, [esp + 0x124]
push ecx
push 0x65
call fcn.00401450
add esp, 8
test eax, eax
jne 0x409241
push str.Couldnt_extract_data
lea ecx, [esp + 0x18]
call fcn.00402460
lea edx, [esp + 0x14]
push edx
call fcn.00403910
call fcn.00402a20
test eax, eax
mov eax, str.LaunchINFSectionEx64.exe
jne 0x409254
mov eax, str.LaunchINFSectionEx86.exe
push eax
lea ecx, [esp + 0x160]
call fcn.00402460
lea eax, [esp + 0x15c]
push eax
lea ecx, [esp + 0xf0]
push ecx
lea edx, [esp + 0x180]
push edx
call fcn.00402c30
lea eax, [esp + 0x184]
add esp, 0xc
push eax
call fcn.00402a20
neg eax
sbb eax, eax
neg eax
add eax, 0x67
push eax
call fcn.00401450
add esp, 8
test eax, eax
lea ecx, [esp + 0x14]
jne 0x4092bc
push str.Couldnt_extract_data
call fcn.00402460
lea ecx, [esp + 0x14]
push ecx
call fcn.00403910
push str.dxrepack.txz
mov dword [esp + 0x84], 0xc
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], 1
call fcn.00402460
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x50]
push eax
call fcn.00403a80
add esp, 4
push eax
lea ecx, [esp + 0x38]
push ecx
call fcn.00402c30
mov ecx, dword [eax + 0x18]
add esp, 0xc
cmp ecx, ebp
jb 0x40930f
mov eax, dword [eax + 4]
jmp 0x409312
add eax, 4
push ebx
push 1
push 3
lea edx, [esp + 0x8c]
push edx
push 1
push 0x80000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
lea ecx, [esp + 0x30]
mov esi, eax
call fcn.004015b0
lea ecx, [esp + 0x4c]
call fcn.004015b0
lea ecx, [esp + 0x14]
call fcn.004015b0
cmp esi, 0xffffffff
jne 0x409367
push str.Couldnt_open_archive_file
lea ecx, [esp + 0x18]
call fcn.00402460
lea eax, [esp + 0x14]
push eax
call fcn.00403910
call dword [sym.imp.KERNEL32.dll_AllocConsole]
push str.Extracting
call dword [sym.imp.KERNEL32.dll_SetConsoleTitleW]
xor ecx, ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], ecx
xor eax, eax
mov dword [esp + 0x8c], 0x44
mov ecx, 0x10
lea edi, [esp + 0x90]
rep stosd dword es:[edi], eax
mov edx, dword [esp + 0xb8]
mov edi, dword [sym.imp.KERNEL32.dll_GetStdHandle]
or edx, 0x100
push 0xfffffffffffffff5
mov dword [esp + 0x6c], ebx
mov dword [esp + 0xbc], edx
mov dword [esp + 0xc8], esi
call edi
push 0xfffffffffffffff4
mov dword [esp + 0xcc], eax
call edi
push str.bsdtar.exe__x__v__J__f____m
mov dword [esp + 0xd0], eax
call fcn.0040a089
mov ecx, dword [esp + 0xf4]
mov edi, eax
mov eax, dword [esp + 0x108]
add esp, 4
cmp eax, ebp
jae 0x409404
lea ecx, [esp + 0xf0]
cmp dword [esp + 0x13c], ebp
mov eax, dword [esp + 0x128]
jae 0x40941b
lea eax, [esp + 0x128]
lea edx, [esp + 0x68]
push edx
lea edx, [esp + 0x90]
push edx
push ecx
push ebx
push ebx
push 1
push ebx
push ebx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x409453
push str.Couldnt_create_a_process
lea ecx, [esp + 0x18]
call fcn.00402460
lea eax, [esp + 0x14]
push eax
call fcn.00403910
push edi
call fcn.0040a018
add esp, 4
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
call dword [sym.imp.KERNEL32.dll_FreeConsole]
mov ecx, dword [esp + 0x68]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esp + 0x68]
lea edx, [esp + 0x7c]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov ecx, dword [esp + 0x68]
push ecx
call esi
mov edx, dword [esp + 0x6c]
push edx
call esi
cmp dword [esp + 0x7c], ebx
je 0x4094b4
push str.Error_during_extraction
lea ecx, [esp + 0x18]
call fcn.00402460
lea eax, [esp + 0x14]
push eax
call fcn.00403910
cmp dword [esp + 0x13c], ebp
mov eax, dword [esp + 0x128]
jae 0x4094cb
lea eax, [esp + 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [esp + 0xec]
push ecx
call fcn.00403c80
add esp, 4
push ebx
lea edx, [esp + 0xf0]
push edx
push str._.DXeurt.inf_Passive__8
lea eax, [esp + 0x168]
push eax
lea ecx, [esp + 0x24]
push ecx
call fcn.00402680
add esp, 0xc
push eax
lea edx, [esp + 0x184]
push edx
call fcn.00401960
add esp, 0x10
neg eax
sbb al, al
inc al
lea ecx, [esp + 0x14]
mov byte [esp + 0x13], al
call fcn.004015b0
cmp byte [esp + 0x13], bl
je 0x409547
cmp dword [esp + 0x78], ebx
jne 0x409547
push ebx
push str.DirectX_Installer
push str.DirectX_End_User_Runtimes__June_2010__has_been_installed_successfully.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
lea eax, [esp + 0xec]
push eax
call fcn.004037b0
add esp, 4
lea ecx, [esp + 0x178]
call fcn.004015b0
lea ecx, [esp + 0x15c]
call fcn.004015b0
lea ecx, [esp + 0x124]
call fcn.004015b0
lea ecx, [esp + 0x140]
call fcn.004015b0
lea ecx, [esp + 0xec]
call fcn.004015b0
lea ecx, [esp + 0x108]
call fcn.004015b0
xor eax, eax
mov ecx, dword [esp + 0x194]
pop edi
pop esi
pop ebp
pop ebx
call fcn.00409ac4
add esp, 0x188
ret 0x10