Function at 0x40105d
Capabilities:
Create directory
Create process on windows
Get common file path
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x554
push ebx
push esi
push edi
push 0x5b
lea esi, [esp + 0x20]
call fcn.004012f9
mov eax, dword [esp + 0x1c]
cmp byte [eax], 0x2b
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], str.NCH_Swift_Sound
jne 0x401099
inc eax
mov dword [esp + 0x14], 0x402090
mov dword [esp + 0x18], eax
push dword [esp + 0x18]
push dword [esp + 0x18]
call fcn.004013b6
push 0x64
lea esi, [esp + 0x2c]
call fcn.004012f9
mov dword [esp + 0x10], 0x65
jmp 0x401236
cmp byte [ebx], 0x2b
jne 0x401183
lea edi, [esp + 0x248]
call fcn.00401339
push dword [esp + 0x14]
lea eax, [esp + 0x45c]
push eax
mov eax, edi
call fcn.004014f4
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
xor edi, edi
push edi
lea eax, [esp + 0x45c]
push eax
call esi
push dword [esp + 0x18]
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x460]
call fcn.004014f4
push edi
lea eax, [esp + 0x3c]
push eax
call esi
inc ebx
push ebx
lea eax, [esp + 0x144]
push eax
lea eax, [esp + 0x40]
call fcn.004014f4
push dword [esp + 0x10]
lea esi, [esp + 0x34]
call fcn.004012f9
inc dword [esp + 0x10]
push edi
push 0x80
push 2
push edi
push edi
push 0xc0000000
lea eax, [esp + 0x158]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
push edi
mov esi, eax
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp esi, 0xffffffff
je 0x401225
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x401225
push dword [esp + 0x10]
lea esi, [esp + 0x20]
call fcn.004012f9
inc dword [esp + 0x10]
cmp byte [ebx], 0x2a
mov eax, str.Distributor
jne 0x4011a3
mov eax, str.Registration
push eax
push dword [esp + 0x1c]
lea eax, [esp + 0x40]
push dword [esp + 0x1c]
push str.Software_s_s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
push dword [esp + 0x1c]
lea esi, [ebx + 1]
push esi
lea eax, [esp + 0x40]
push eax
push 0x80000002
call section..text
cmp byte [ebx], 0x2a
jne 0x401218
cmp byte [esi], 0x42
jne 0x401218
cmp byte [ebx + 2], 0x75
jne 0x401218
cmp byte [ebx + 3], 0x79
jne 0x401218
cmp byte [ebx + 4], 0x4c
jne 0x401218
cmp byte [ebx + 5], 0x69
jne 0x401218
cmp byte [ebx + 6], 0x6e
jne 0x401218
cmp byte [ebx + 7], 0x6b
jne 0x401218
push dword [esp + 0x1c]
lea eax, [esp + 0x3c]
push esi
push eax
push 0x80000001
call section..text
push dword [esp + 0x18]
push dword [esp + 0x18]
call fcn.004013b6
push dword [esp + 0x10]
lea esi, [esp + 0x2c]
call fcn.004012f9
inc dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
test ebx, ebx
jne 0x4010be
push 0x63
lea esi, [esp + 0x20]
call fcn.004012f9
xor edi, edi
inc edi
lea eax, [esp + 0x248]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push edi
lea eax, [esp + 0x144]
push str.nch_dsetup.exe
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [esp + 0x140]
push eax
lea eax, [esp + 0x354]
push eax
lea eax, [esp + 0x250]
call fcn.004014f4
xor ebx, ebx
push ebx
push 0x80
push 2
push ebx
push ebx
push 0xc0000000
lea eax, [esp + 0x368]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x4012c4
inc edi
cmp edi, 0x64
jl 0x401250
jmp 0x4012e0
push ebx
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x28]
push dword [esp + 0x28]
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 1
lea eax, [esp + 0x354]
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret