Function at 0x4015d0
Capabilities:
Accept command line arguments
Create directory
Get common file path
Set current directory

Disassembly:
mov eax, 0x3228
call fcn.00402670
push esi
push edi
push 0x200
lea eax, [esp + 0x162c]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x1628]
push eax
lea ecx, [esp + 0xa24]
call fcn.00401cf0
push dword [esp + 0xe24]
call fcn.00401ac0
mov edi, dword [esp + 0xe28]
add esp, 4
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x401620
push 0xffffffffffffffff
sub esi, ecx
push str.MTUNERINJECT_DEBUG
push esi
push edi
call section..text
add esp, 0x10
test eax, eax
jne 0x401657
push 0xffffffffffffffff
push str.MTUNERINJECT
push esi
push edi
call section..text
add esp, 0x10
test eax, eax
je 0x401a7b
movups xmm0, xmmword [str.MTunerDLL32.dll]
push 0x94
push 0
movups xmmword [eax], xmm0
lea eax, [esp + 0x220]
push eax
call fcn.004038f0
add esp, 0xc
mov dword [esp + 0x210], 0x9c
mov dword [esp + 0x214], 6
push 3
push 2
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
push edx
push eax
push 2
lea eax, [esp + 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoA]
test eax, eax
je 0x401706
lea eax, [esp + 0xc]
push eax
push 0
push 0
push 0x4182d8
call sub.SHELL32.dll_SHGetKnownFolderPath
test eax, eax
jne 0x40175c
push dword [esp + 0xc]
lea ecx, [esp + 0x214]
call fcn.00401cf0
lea edx, [esp + 0x10]
mov ecx, dword [eax + 0x404]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x4016e7
lea ecx, [esp + 0x210]
call fcn.00401d90
jmp 0x4017a5
lea eax, [esp + 0x210]
push eax
push 0
push 0
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x40175c
lea eax, [esp + 0x210]
push eax
lea ecx, [esp + 0x61c]
call fcn.00401cf0
lea edx, [esp + 0x10]
mov ecx, dword [eax + 0x404]
nop
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x401740
lea ecx, [esp + 0x618]
call fcn.00401d90
jmp 0x4017a5
push str.APPDATA
call fcn.00405827
add esp, 4
test eax, eax
je 0x4017a0
push eax
lea ecx, [esp + 0x61c]
call fcn.00401cf0
lea edx, [esp + 0x10]
mov ecx, dword [eax + 0x404]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x401784
lea ecx, [esp + 0x618]
call fcn.00401d90
jmp 0x4017a5
mov byte [esp + 0x10], 0
lea ecx, [esp + 0x10]
dec ecx
nop word [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4017b0
mov eax, dword [str.MTuner]
mov dword [ecx], eax
mov eax, dword [0x418280]
mov dword [ecx + 4], eax
lea eax, [esp + 0x10]
push 1
push eax
lea ecx, [esp + 0x1a30]
call fcn.00401bf0
push 0
push dword [eax + 0x804]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea ecx, [esp + 0x1a28]
call fcn.00401d70
cmp dword [esp + 0x3234], 1
je 0x401a74
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push str.23
push eax
call fcn.00403104
add esp, 8
test eax, eax
je 0x401a74
lea esi, [eax + 8]
xor ecx, ecx
push str.23
push esi
mov word [eax - 2], cx
call fcn.00403104
xor ecx, ecx
lea edx, [esp + 0x2238]
add esp, 8
sub edx, esi
mov word [eax], cx
movzx ecx, word [esi]
lea esi, [esi + 2]
mov word [edx + esi - 2], cx
test cx, cx
jne 0x401845
push 4
lea esi, [eax + 0xa]
push str.23
push esi
call fcn.00405b83
add esp, 0xc
test eax, eax
jne 0x401a74
add esi, 8
push str.23
push esi
call fcn.00403104
mov edx, eax
add esp, 8
test edx, edx
je 0x401a74
xor eax, eax
lea ecx, [esp + 0x2a30]
mov word [edx], ax
sub ecx, esi
nop dword [eax]
movzx eax, word [esi]
lea esi, [esi + 2]
mov word [ecx + esi - 2], ax
test ax, ax
jne 0x4018a0
push 4
lea esi, [edx + 0xa]
push str.23
push esi
call fcn.00405b83
add esp, 0xc
test eax, eax
jne 0x401a74
add esi, 8
push str.23
push esi
call fcn.00403104
xor ecx, ecx
add esp, 8
mov word [eax], cx
lea ecx, [esp + 0xe28]
sub ecx, esi
nop word [eax + eax]
movzx eax, word [esi]
lea esi, [esi + 2]
mov word [ecx + esi - 2], ax
test ax, ax
jne 0x4018f0
lea ecx, [esp + 0xe28]
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x401910
sub ecx, edx
sar ecx, 1
jne 0x401983
xor ecx, ecx
movzx eax, word [esp + ecx + 0x2230]
lea ecx, [ecx + 2]
mov word [esp + ecx + 0xe26], ax
test ax, ax
jne 0x401923
lea ecx, [esp + 0xe28]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x401945
sub ecx, edx
sar ecx, 1
movzx eax, word [esp + ecx*2 + 0xe28]
mov edx, eax
cmp eax, 0x2f
je 0x401979
cmp dx, 0x5c
je 0x401979
movzx eax, word [esp + ecx*2 + 0xe26]
dec ecx
mov edx, eax
cmp eax, 0x2f
jne 0x401963
xor eax, eax
mov word [esp + ecx*2 + 0xe2a], ax
lea eax, [esp + 0xe28]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
je 0x401a85
lea eax, [esp + 0x2230]
push 0x4182b4
push eax
call fcn.00405c73
add esp, 8
test eax, eax
je 0x401a8f
push ebx
push eax
call fcn.00405e96
add esp, 4
mov dword [esp + 0xc], 0
lea eax, [esp + 0xe2c]
lea ecx, [esp + 0x1a2c]
push eax
call fcn.00401cf0
lea ecx, [esp + 0x214]
mov ebx, dword [eax + 0x404]
lea eax, [esp + 0x2a34]
push eax
call fcn.00401cf0
mov edi, dword [esp + 0xe28]
lea ecx, [esp + 0x61c]
mov esi, dword [eax + 0x404]
lea eax, [esp + 0x2234]
push eax
call fcn.00401cf0
lea ecx, [esp + 0xc]
push ecx
push ebx
mov eax, dword [eax + 0x404]
push esi
push edi
push eax
call fcn.004020d0
add esp, 0x14
lea ecx, [esp + 0x61c]
mov bl, al
call fcn.00401d90
lea ecx, [esp + 0x214]
call fcn.00401d90
lea ecx, [esp + 0x1a2c]
call fcn.00401d90
test bl, bl
pop ebx
je 0x401a74
mov esi, dword [esp + 8]
lea ecx, [esp + 0xa20]
call fcn.00401d90
pop edi
mov eax, esi
pop esi
add esp, 0x3228
ret
push 0
call fcn.00401170
push str.Could_not_locate_executable_
call fcn.00401170
push str.Could_not_change_working_directory_
call fcn.00401170
push str.Executable_doesnt_exist_
call fcn.00401170
int3