Function at 0x44546f
Capabilities:
Create process on windows
Set environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa88
push ebx
push esi
push edi
mov edi, eax
mov ecx, edi
lea eax, [ebp - 0xa84]
call fcn.004019f3
lea eax, [ebp - 0xa84]
push str..zip
push eax
call fcn.00535c2f
test eax, eax
pop ecx
pop ecx
jne 0x445586
lea eax, [ebp - 0x264]
push eax
call fcn.00445e4b
mov bl, al
test bl, bl
jne 0x4454c3
lea eax, [ebp - 0x264]
push eax
call fcn.00445ed8
lea eax, [ebp - 0x264]
push eax
call fcn.00401d29
test al, al
jne 0x4454e1
mov eax, dword [ebp + 8]
mov dword [eax], 2
jmp 0x4456c8
lea eax, [ebp - 0x264]
mov ecx, edi
call fcn.004e1086
test al, al
je 0x4454d3
mov ecx, edi
lea esi, [ebp - 0x674]
call fcn.0044a0a8
push 0x53ec98
mov eax, esi
push eax
lea eax, [ebp - 0x264]
push eax
lea eax, [ebp - 0x46c]
push eax
call fcn.0044a0d6
lea eax, [ebp - 0x46c]
push eax
call fcn.00401d29
test al, al
je 0x4454d3
mov eax, esi
push eax
push str.SoftwareNCH_SoftwareComponents_s
mov esi, 0x104
lea edi, [ebp - 0x87c]
call fcn.0044b138
test bl, bl
pop ecx
pop ecx
mov esi, str.Path
je 0x445562
lea eax, [ebp - 0x46c]
push eax
push esi
mov eax, edi
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.00423784
lea eax, [ebp - 0x46c]
push eax
push esi
lea eax, [ebp - 0x87c]
push eax
push SysReAllocString
call fcn.00423784
mov eax, dword [ebp + 8]
and dword [eax], 0
jmp 0x4456c8
call fcn.0042ab0b
cmp byte [ebp + 0x10], 0
mov bl, al
je 0x4455a3
push 0x53ec90
push str.LQUIET
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
push 0x3c
pop esi
push esi
lea eax, [ebp - 0x58]
push 0
push eax
call fcn.005251f0
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x48], edi
add esp, 0xc
mov edi, 0x400
lea esi, [ebp - 0x1c]
mov dword [ebp - 0x54], 0x140
mov dword [ebp - 0x4c], 0x5675cc
call fcn.0041d1f7
cmp byte [ebp + 0x10], 0
mov esi, 0x53ec98
mov eax, str._LQUIET
jne 0x4455e8
mov eax, esi
push dword [ebp + 0xc]
push eax
push str._s_instby__sExpressBurn
lea eax, [ebp - 0x1c]
call fcn.0045240f
add esp, 0xc
xor edi, edi
lea eax, [ebp - 0x10]
push eax
mov dword [ebp - 0x10], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], edi
call fcn.00454c62
mov eax, dword [ebp - 0x10]
cmp eax, edi
je 0x44562c
cmp word [eax], di
je 0x44562c
push eax
push str.__instsvar__s
lea eax, [ebp - 0x1c]
call fcn.004e1ed7
pop ecx
pop ecx
mov eax, dword [ebp - 0x1c]
cmp eax, edi
mov dword [ebp - 0x44], eax
jne 0x445639
mov dword [ebp - 0x44], esi
mov al, byte [ebp + 0x10]
neg al
sbb eax, eax
and eax, 3
inc eax
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x58]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x44568f
push 0x1d4c0
push dword [ebp - 0x20]
call dword [sym.imp.USER32.dll_WaitForInputIdle]
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp byte [ebp + 0x10], 0
je 0x445688
neg bl
sbb ebx, ebx
and ebx, 0x53ec90
push ebx
push str.LQUIET
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov esi, dword [ebp + 8]
mov dword [esi], edi
jmp 0x4456b4
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x4c7
lea eax, [ebp + 0x10]
mov dword [ebp + 0x10], 1
je 0x4456ad
mov dword [ebp + 0x10], 2
mov eax, dword [eax]
mov esi, dword [ebp + 8]
mov dword [esi], eax
push dword [ebp - 0x10]
call fcn.00520947
pop ecx
push dword [ebp - 0x1c]
call fcn.00520947
mov eax, esi
pop ecx
pop edi
pop esi
pop ebx
leave
ret 0xc