Function at 0x77c095f7
Capabilities:
Set environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
mov ebx, dword [ebp + 8]
push esi
xor esi, esi
cmp ebx, esi
push edi
mov dword [ebp - 4], esi
je 0x77c09660
push 0x3d
push ebx
call sym.msvcrt.dll_wcschr
mov edi, eax
cmp edi, esi
pop ecx
pop ecx
je 0x77c09660
cmp ebx, edi
je 0x77c09660
xor eax, eax
cmp word [edi + 2], si
sete al
mov dword [ebp - 8], eax
mov eax, dword [sym.msvcrt.dll__wenviron]
cmp eax, dword [sym.msvcrt.dll___winitenv]
jne 0x77c09645
call fcn.77c09596
mov dword [sym.msvcrt.dll__wenviron], eax
cmp eax, esi
jne 0x77c096a3
cmp dword [ebp + 0xc], esi
mov eax, dword [sym.msvcrt.dll__environ]
je 0x77c09668
cmp eax, esi
je 0x77c09668
call fcn.77c07471
test eax, eax
je 0x77c096a3
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret
cmp dword [ebp - 8], esi
jne 0x77c09892
cmp eax, esi
jne 0x77c09690
push 4
call sym.msvcrt.dll_malloc
cmp eax, esi
pop ecx
mov dword [sym.msvcrt.dll__environ], eax
je 0x77c09660
mov dword [eax], esi
cmp dword [sym.msvcrt.dll__wenviron], esi
jne 0x77c096a3
push 4
call sym.msvcrt.dll_malloc
cmp eax, esi
pop ecx
mov dword [sym.msvcrt.dll__wenviron], eax
je 0x77c09660
mov dword [eax], esi
mov eax, dword [sym.msvcrt.dll__wenviron]
sub edi, ebx
sar edi, 1
push ebx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], edi
call fcn.77c0953b
mov edi, dword [ebp - 0xc]
mov ebx, eax
cmp ebx, esi
pop ecx
jl 0x77c09700
cmp dword [edi], esi
je 0x77c09700
lea edi, [edi + ebx*4]
push dword [edi]
call sym.msvcrt.dll_free
cmp dword [ebp - 8], esi
pop ecx
jne 0x77c096e6
mov eax, dword [ebp + 8]
mov dword [edi], eax
jmp 0x77c09737
mov eax, dword [edi + 4]
mov dword [edi], eax
inc ebx
add edi, 4
cmp dword [edi], esi
jne 0x77c096dd
mov eax, ebx
shl eax, 2
push eax
push dword [ebp - 0xc]
call sym.msvcrt.dll_realloc
cmp eax, esi
pop ecx
pop ecx
je 0x77c09737
jmp 0x77c09732
cmp dword [ebp - 8], esi
jne 0x77c09889
cmp ebx, esi
jge 0x77c0970f
neg ebx
lea eax, [ebx*4 + 8]
push eax
push edi
call sym.msvcrt.dll_realloc
cmp eax, esi
pop ecx
pop ecx
je 0x77c09660
mov ecx, dword [ebp + 8]
lea ebx, [eax + ebx*4]
mov dword [ebx], ecx
mov dword [ebx + 4], esi
mov dword [sym.msvcrt.dll__wenviron], eax
cmp dword [ebp + 0xc], esi
je 0x77c09873
push dword [ebp + 8]
call sym.msvcrt.dll_wcslen
lea eax, [eax + eax + 4]
push eax
call sym.msvcrt.dll_malloc
mov edi, eax
cmp edi, esi
pop ecx
pop ecx
mov dword [ebp - 0x18], edi
je 0x77c09873
push dword [ebp + 8]
push edi
call sym.msvcrt.dll_wcscpy
mov eax, dword [ebp - 0x14]
lea ebx, [edi + eax*2]
mov word [ebx], si
inc ebx
pop ecx
inc ebx
cmp dword [0x77c2fac8], 1
pop ecx
jne 0x77c097ae
mov eax, dword [ebp - 8]
neg eax
sbb eax, eax
not eax
and eax, ebx
push eax
push edi
call dword [sym.imp._CKERNEL.dll_SetEnvironmentVariableW]
test eax, eax
jne 0x77c097ae
call dword [sym.imp._CKERNEL.dll_GetLastError]
cmp eax, 0x78
jne 0x77c097aa
mov dword [0x77c2fac8], esi
jmp 0x77c097ba
or dword [ebp - 4], 0xffffffff
cmp dword [0x77c2fac8], esi
jne 0x77c0986c
push esi
push esi
push esi
push esi
push 0xffffffffffffffff
push edi
mov edi, dword [sym.imp._CKERNEL.dll_WideCharToMultiByte]
push esi
push esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], esi
call edi
cmp eax, esi
mov dword [ebp - 0xc], eax
je 0x77c09853
push eax
call sym.msvcrt.dll_malloc
cmp eax, esi
pop ecx
mov dword [ebp - 0x14], eax
je 0x77c09853
push esi
push esi
push dword [ebp - 0xc]
push eax
push 0xffffffffffffffff
push dword [ebp - 0x18]
push esi
push esi
call edi
test eax, eax
je 0x77c09853
cmp dword [ebp - 8], esi
jne 0x77c09833
push esi
push esi
push esi
push esi
push 0xffffffffffffffff
push ebx
push esi
push esi
call edi
cmp eax, esi
mov dword [ebp - 0xc], eax
je 0x77c09853
push eax
call sym.msvcrt.dll_malloc
cmp eax, esi
pop ecx
mov dword [ebp - 0x10], eax
je 0x77c09853
push esi
push esi
push dword [ebp - 0xc]
push eax
push 0xffffffffffffffff
push ebx
push esi
push esi
call edi
test eax, eax
jne 0x77c09833
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 4], 0xffffffff
je 0x77c09857
mov eax, dword [ebp - 8]
neg eax
sbb eax, eax
not eax
and eax, dword [ebp - 0x10]
push eax
push dword [ebp - 0x14]
call dword [sym.imp._CKERNEL.dll_SetEnvironmentVariableA]
test eax, eax
jne 0x77c09857
or dword [ebp - 4], 0xffffffff
push dword [ebp - 0x10]
call sym.msvcrt.dll_free
push dword [ebp - 0x14]
call sym.msvcrt.dll_free
mov edi, dword [ebp - 0x18]
pop ecx
pop ecx
push edi
call sym.msvcrt.dll_free
pop ecx
cmp dword [ebp - 8], esi
je 0x77c09881
push dword [ebp + 8]
call sym.msvcrt.dll_free
pop ecx
mov eax, dword [ebp - 4]
jmp 0x77c09663
push dword [ebp + 8]
call sym.msvcrt.dll_free
pop ecx
xor eax, eax
jmp 0x77c09663