Function at 0x467940
Capabilities:
Create process on windows
Create process suspended
Query environment variable
Set environment variable

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe88
push ebx
push esi
xor ebx, ebx
mov dword [ebp - 0x170], ebx
mov dword [ebp - 0x174], ebx
mov dword [ebp - 0x178], ebx
mov dword [ebp - 0x16c], ebx
mov dword [ebp - 0x160], ebx
mov dword [ebp - 0x164], ebx
mov dword [ebp - 0x168], ebx
mov dword [ebp - 0x158], ebx
mov dword [ebp - 0x15c], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov ebx, eax
mov eax, dword [ebp - 4]
call fcn.00404ecc
mov eax, dword [ebp - 8]
call fcn.00404ecc
mov eax, dword [ebp + 8]
call fcn.00404ecc
xor eax, eax
push ebp
push 0x467c28
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x4c]
xor ecx, ecx
mov edx, 0x44
call fcn.00403554
mov dword [ebp - 0x4c], 0x44
cmp dword [ebp + 8], 0
jne 0x4679d8
lea edx, [ebp + 8]
mov eax, dword [ebp - 4]
call fcn.00409414
mov eax, dword [ebx + 0x204]
call fcn.00404edc
push eax
push 0x467c3c
call sub.kernel32.dll_SetEnvironmentVariableA
mov eax, dword [ebx + 0x20c]
call fcn.00404edc
push eax
push 0x467c50
call sub.kernel32.dll_SetEnvironmentVariableA
mov eax, dword [ebx + 0x208]
call fcn.00404edc
push eax
push 0x467c60
call sub.kernel32.dll_SetEnvironmentVariableA
lea edx, [ebp - 0x15c]
xor eax, eax
call fcn.004032ac
mov eax, dword [ebp - 0x15c]
lea edx, [ebp - 0x158]
call fcn.004093e0
mov eax, dword [ebp - 0x158]
call fcn.00404edc
push eax
push 0x467c70
call sub.kernel32.dll_SetEnvironmentVariableA
test eax, eax
jne 0x467aad
call sub.kernel32.dll_GetLastError
mov esi, eax
push 0x467c8c
lea edx, [ebp - 0x164]
mov eax, esi
call fcn.004627c8
push dword [ebp - 0x164]
push 0x467cd0
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x168]
call fcn.00408dd4
push dword [ebp - 0x168]
push 0x467cdc
lea eax, [ebp - 0x160]
mov edx, 5
call fcn.00404de0
mov eax, dword [ebp - 0x160]
call fcn.0043217c
push 0x105
lea eax, [ebp - 0x151]
push eax
mov eax, dword [ebp - 4]
call fcn.00404edc
push eax
call sub.kernel32.dll_ExpandEnvironmentStringsA
test eax, eax
je 0x467ade
lea eax, [ebp - 4]
lea edx, [ebp - 0x151]
mov ecx, 0x105
call fcn.00404cbc
push 0x105
lea eax, [ebp - 0x151]
push eax
mov eax, dword [ebp - 8]
call fcn.00404edc
push eax
call sub.kernel32.dll_ExpandEnvironmentStringsA
test eax, eax
je 0x467b0f
lea eax, [ebp - 8]
lea edx, [ebp - 0x151]
mov ecx, 0x105
call fcn.00404cbc
push 0x105
lea eax, [ebp - 0x151]
push eax
mov eax, dword [ebp + 8]
call fcn.00404edc
push eax
call sub.kernel32.dll_ExpandEnvironmentStringsA
test eax, eax
je 0x467b40
lea eax, [ebp + 8]
lea edx, [ebp - 0x151]
mov ecx, 0x105
call fcn.00404cbc
lea eax, [ebx + 4]
push eax
lea eax, [ebp - 0x4c]
push eax
mov eax, dword [ebp + 8]
call fcn.00404edc
push eax
push 0
push 0x34
push 0
push 0
push 0
push 0x467ce8
push dword [ebp - 4]
push 0x467cf4
push dword [ebp - 8]
lea eax, [ebp - 0x16c]
mov edx, 4
call fcn.00404de0
mov eax, dword [ebp - 0x16c]
call fcn.00404edc
push eax
push 0
call sub.kernel32.dll_CreateProcessA
cmp eax, 1
sbb eax, eax
inc eax
mov ebx, eax
test bl, bl
jne 0x467bf5
call sub.kernel32.dll_GetLastError
mov esi, eax
push 0x467d00
lea edx, [ebp - 0x174]
mov eax, esi
call fcn.004627c8
push dword [ebp - 0x174]
push 0x467cd0
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x178]
call fcn.00408dd4
push dword [ebp - 0x178]
push 0x467cdc
lea eax, [ebp - 0x170]
mov edx, 5
call fcn.00404de0
mov eax, dword [ebp - 0x170]
call fcn.0043217c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x467c2f
lea eax, [ebp - 0x178]
mov edx, 9
call fcn.00404a70
lea eax, [ebp - 8]
mov edx, 2
call fcn.00404a70
lea eax, [ebp + 8]
call fcn.00404a4c
ret