Function at 0x402f30
Capabilities:
Accept command line arguments
Check os version
Create process on windows
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x478
mov eax, dword [0x424008]
xor eax, esp
mov dword [esp + 0x474], eax
push esi
push edi
mov edi, dword [ebp + 8]
xorps xmm0, xmm0
mov ecx, edi
movaps xmmword [esp + 0x10], xmm0
movq qword [esp + 0x20], xmm0
mov dword [esp + 0x28], 0
call fcn.00401bf0
test eax, eax
je 0x4033c3
push 0x425c64
push 1
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreA]
mov dword [0x425180], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x402fbb
push dword [0x425180]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x474]
xor ecx, esp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push 0x200
mov esi, eax
lea eax, [esp + 0x27c]
push 0
push eax
call fcn.0040bcd0
add esp, 0xc
lea eax, [esp + 0x278]
push 0x1ff
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp byte [esi], 0x22
jne 0x402ff5
inc esi
lea eax, [esp + 0x278]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dh, byte [eax + esi]
add eax, esi
mov dl, dh
cmp dh, 0x22
jne 0x403012
mov dl, byte [eax + 1]
lea ecx, [eax + 1]
cmp dh, 0x22
push 0x200
cmovne ecx, eax
cmp dl, 0x20
lea eax, [ecx + 1]
cmovne eax, ecx
push eax
push 0x42d890
call fcn.0040d140
add esp, 0xc
push 7
push str.Install
push 0x42d890
call fcn.0040d270
add esp, 0xc
test eax, eax
jne 0x40306e
xor ecx, ecx
mov al, byte [ecx + 0x42d898]
lea ecx, [ecx + 1]
mov byte [ecx + 0x42520b], al
test al, al
jne 0x403051
mov eax, 1
jmp 0x4032f9
mov ecx, 0x4209b8
mov eax, 0x42d890
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403098
test dl, dl
je 0x403094
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403098
add eax, 2
add ecx, 2
test dl, dl
jne 0x403078
xor eax, eax
jmp 0x40309d
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4030b8
call fcn.004093e0
test eax, eax
jne 0x4033c3
mov eax, dword [0x425518]
jmp 0x4032fe
mov ecx, str.Uninstall
mov eax, 0x42d890
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4030e2
test dl, dl
je 0x4030de
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4030e2
add eax, 2
add ecx, 2
test dl, dl
jne 0x4030c2
xor eax, eax
jmp 0x4030e7
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4030f5
mov eax, 2
jmp 0x4032f9
push 0x42520c
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x403263
push 0x90
lea eax, [esp + 0x178]
push 0
push eax
call fcn.0040bcd0
add esp, 0xc
mov dword [esp + 0x170], 0x94
lea eax, [esp + 0x170]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esp + 0x180]
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
sub eax, 1
je 0x4031d3
sub eax, 1
jne 0x4031e9
push str.shell32.dll
call esi
test eax, eax
je 0x4031e9
push str.IsUserAnAdmin
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4031e9
call eax
test eax, eax
je 0x4031e9
push str.d3d9.dll
call esi
test eax, eax
je 0x40321c
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call fcn.00408280
test eax, eax
jne 0x4032f7
push eax
push 0x407080
push dword [0x425188]
push 0x76
push edi
call dword [sym.imp.USER32.dll_DialogBoxParamA]
test eax, eax
jne 0x4032f7
pop edi
pop esi
mov ecx, dword [esp + 0x474]
xor ecx, esp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esp + 0x174], 4
ja 0x40317d
jne 0x4031e9
cmp dword [esp + 0x178], 0
ja 0x40317d
push 0x20
push 0x42564c
push 0x4209c8
push dword [0x425188]
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
mov ecx, dword [esp + 0x474]
xor ecx, esp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret 0x10
push 0
push 0x401a60
push dword [0x425188]
push 0x75
push edi
call dword [sym.imp.USER32.dll_DialogBoxParamA]
test eax, eax
je 0x4033c3
push 1
push str.DirectXDXSETUP.exe
call dword [sym.imp.KERNEL32.dll_WinExec]
cmp eax, 0x1f
ja 0x4033c3
push 0x30
push 0x4207fc
push str.DXSETUP.exe
push 0
jmp 0x4033bd
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x170]
push 0x425750
push 0x425548
push 0x425414
push str._s_s_s
push eax
call esi
add esp, 0x14
lea eax, [esp + 0x170]
push str..ini
push eax
call dword [sym.imp.SHLWAPI.dll_PathRenameExtensionA]
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x174]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
jne 0x4032f0
push str.Setup.ini
push 0x42520c
lea eax, [esp + 0x178]
push 0x420870
push eax
call esi
add esp, 0x10
lea eax, [esp + 0x278]
push eax
lea eax, [esp + 0x174]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x4033ab
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
mov dword [0x425518], eax
sub eax, 1
je 0x403378
sub eax, 1
je 0x403359
mov ecx, edi
call fcn.00402cb0
test eax, eax
je 0x403201
mov edi, dword [sym.imp.USER32.dll_PeekMessageA]
mov esi, dword [sym.imp.USER32.dll_WaitMessage]
push 1
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
call edi
test eax, eax
je 0x403355
cmp dword [esp + 0x14], 0x12
je 0x40338c
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x403323
call esi
jmp 0x403323
call fcn.00408b20
mov eax, dword [esp + 0x18]
pop edi
pop esi
mov ecx, dword [esp + 0x474]
xor ecx, esp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret 0x10
mov ecx, edi
call fcn.00402cb0
test eax, eax
je 0x403201
call fcn.00405f20
call fcn.00402c60
mov eax, dword [esp + 0x18]
pop edi
pop esi
mov ecx, dword [esp + 0x474]
xor ecx, esp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret 0x10
push 0x20
push 0x42564c
push 0x420a18
push dword [0x425188]
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [esp + 0x47c]
xor eax, eax
pop edi
pop esi
xor ecx, esp
call fcn.0040aa0f
mov esp, ebp
pop ebp
ret 0x10