Function at 0x7813c2c8
Capabilities:
Set environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [ebp + 8]
push esi
xor esi, esi
cmp eax, esi
mov dword [ebp - 4], esi
jne 0x7813c2fb
call sym.MSVCR80.dll__errno
push esi
push esi
push esi
push esi
push esi
mov dword [eax], 0x16
call sym.MSVCR80.dll__invalid_parameter
add esp, 0x14
or eax, 0xffffffff
jmp 0x7813c380
push ebx
push edi
mov edi, dword [eax]
cmp edi, esi
mov dword [ebp - 8], edi
je 0x7813c370
push 0x3d
push edi
call sym.MSVCR80.dll_wcschr
mov ebx, eax
cmp ebx, esi
pop ecx
pop ecx
je 0x7813c370
cmp edi, ebx
je 0x7813c370
xor eax, eax
cmp word [ebx + 2], si
sete al
mov dword [ebp - 0xc], eax
mov eax, dword [sym.MSVCR80.dll__wenviron]
cmp eax, dword [sym.MSVCR80.dll___winitenv]
jne 0x7813c342
mov edi, eax
call fcn.7813c26b
mov edi, dword [ebp - 8]
mov dword [sym.MSVCR80.dll__wenviron], eax
cmp eax, esi
jne 0x7813c3be
cmp dword [ebp + 0xc], esi
mov eax, dword [sym.MSVCR80.dll__environ]
je 0x7813c383
cmp eax, esi
je 0x7813c383
call fcn.78139910
mov dword [0x781c3b2c], eax
call fcn.781336b6
test eax, eax
jge 0x7813c3be
call fcn.7813988b
test eax, eax
je 0x7813c3be
call sym.MSVCR80.dll__errno
mov dword [eax], 0x16
or eax, 0xffffffff
pop edi
pop ebx
pop esi
leave
ret
cmp dword [ebp - 0xc], esi
jne 0x7813c627
cmp eax, esi
jne 0x7813c3ab
push 4
call sym.MSVCR80.dll__malloc_crt
cmp eax, esi
pop ecx
mov dword [sym.MSVCR80.dll__environ], eax
je 0x7813c37b
mov dword [eax], esi
cmp dword [sym.MSVCR80.dll__wenviron], esi
jne 0x7813c3be
push 4
call sym.MSVCR80.dll__malloc_crt
cmp eax, esi
pop ecx
mov dword [sym.MSVCR80.dll__wenviron], eax
je 0x7813c37b
mov dword [eax], esi
mov eax, dword [sym.MSVCR80.dll__wenviron]
cmp eax, esi
mov dword [ebp - 0x18], eax
je 0x7813c37b
sub ebx, edi
sar ebx, 1
push edi
mov edi, ebx
mov dword [ebp - 0x14], ebx
call fcn.7813c21a
mov ebx, eax
cmp ebx, esi
pop ecx
jl 0x7813c435
mov edi, dword [ebp - 0x18]
cmp dword [edi], esi
je 0x7813c435
lea edi, [edi + ebx*4]
push dword [edi]
call sym.MSVCR80.dll_free
cmp dword [ebp - 0xc], esi
pop ecx
jne 0x7813c412
mov eax, dword [ebp - 8]
mov dword [edi], eax
mov eax, dword [ebp + 8]
mov dword [eax], esi
jmp 0x7813c488
mov eax, dword [edi + 4]
mov dword [edi], eax
mov eax, dword [ebp - 0x18]
inc ebx
lea edi, [eax + ebx*4]
cmp dword [edi], esi
jne 0x7813c406
cmp ebx, 0x3fffffff
jae 0x7813c488
push 4
push ebx
push dword [sym.MSVCR80.dll__wenviron]
call sym.MSVCR80.dll__recalloc_crt
add esp, 0xc
cmp eax, esi
je 0x7813c488
jmp 0x7813c483
cmp dword [ebp - 0xc], esi
jne 0x7813c619
cmp ebx, esi
jge 0x7813c444
neg ebx
lea eax, [ebx + 2]
cmp eax, ebx
jl 0x7813c37b
cmp eax, 0x3fffffff
jae 0x7813c37b
push eax
push 4
push dword [sym.MSVCR80.dll__wenviron]
call sym.MSVCR80.dll__recalloc_crt
add esp, 0xc
cmp eax, esi
je 0x7813c37b
mov ecx, dword [ebp - 8]
lea ebx, [eax + ebx*4]
mov dword [ebx], ecx
mov ecx, dword [ebp + 8]
mov dword [ebx + 4], esi
mov dword [ecx], esi
mov dword [sym.MSVCR80.dll__wenviron], eax
cmp dword [ebp + 0xc], esi
je 0x7813c5fe
push 2
push dword [ebp - 8]
call sym.MSVCR80.dll_wcslen
inc eax
pop ecx
inc eax
push eax
call sym.MSVCR80.dll__calloc_crt
mov edi, eax
cmp edi, esi
pop ecx
pop ecx
mov dword [ebp - 0x1c], edi
je 0x7813c5fe
push dword [ebp - 8]
push dword [ebp - 8]
call sym.MSVCR80.dll_wcslen
inc eax
pop ecx
inc eax
push eax
push edi
call sym.MSVCR80.dll_wcscpy_s
add esp, 0xc
test eax, eax
je 0x7813c4dc
push esi
push esi
push esi
push esi
push esi
call sym.MSVCR80.dll__invoke_watson
add esp, 0x14
mov eax, dword [ebp - 0x14]
lea ebx, [edi + eax*2]
mov word [ebx], si
inc ebx
inc ebx
cmp dword [0x781c1b20], 1
jne 0x7813c51e
mov eax, dword [ebp - 0xc]
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 0x7813c51e
call dword [sym.imp._CKERNEL.dll_GetLastError]
cmp eax, 0x78
jne 0x7813c51a
mov dword [0x781c1b20], esi
jmp 0x7813c52a
or dword [ebp - 4], 0xffffffff
cmp dword [0x781c1b20], esi
jne 0x7813c5e6
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 - 0x18], esi
mov dword [ebp - 0x14], esi
call edi
cmp eax, esi
mov dword [ebp - 0x10], eax
je 0x7813c5cd
push 1
push eax
call sym.MSVCR80.dll__calloc_crt
cmp eax, esi
pop ecx
pop ecx
mov dword [ebp - 0x18], eax
je 0x7813c5cd
push esi
push esi
push dword [ebp - 0x10]
push eax
push 0xffffffffffffffff
push dword [ebp - 0x1c]
push esi
push esi
call edi
test eax, eax
je 0x7813c5cd
cmp dword [ebp - 0xc], esi
jne 0x7813c5ad
push esi
push esi
push esi
push esi
push 0xffffffffffffffff
push ebx
push esi
push esi
call edi
cmp eax, esi
mov dword [ebp - 0x10], eax
je 0x7813c5cd
push 1
push eax
call sym.MSVCR80.dll__calloc_crt
cmp eax, esi
pop ecx
pop ecx
mov dword [ebp - 0x14], eax
je 0x7813c5cd
push esi
push esi
push dword [ebp - 0x10]
push eax
push 0xffffffffffffffff
push ebx
push esi
push esi
call edi
test eax, eax
jne 0x7813c5ad
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 4], 0xffffffff
je 0x7813c5d1
mov eax, dword [ebp - 0xc]
neg eax
sbb eax, eax
not eax
and eax, dword [ebp - 0x14]
push eax
push dword [ebp - 0x18]
call dword [sym.imp._CKERNEL.dll_SetEnvironmentVariableA]
test eax, eax
jne 0x7813c5d1
or dword [ebp - 4], 0xffffffff
push dword [ebp - 0x14]
call sym.MSVCR80.dll_free
push dword [ebp - 0x18]
call sym.MSVCR80.dll_free
mov edi, dword [ebp - 0x1c]
pop ecx
pop ecx
cmp dword [ebp - 4], 0xffffffff
jne 0x7813c5f7
call sym.MSVCR80.dll__errno
mov dword [eax], 0x2a
push edi
call sym.MSVCR80.dll_free
pop ecx
cmp dword [ebp - 0xc], esi
je 0x7813c611
push dword [ebp - 8]
call sym.MSVCR80.dll_free
mov eax, dword [ebp + 8]
pop ecx
mov dword [eax], esi
mov eax, dword [ebp - 4]
jmp 0x7813c37e
push dword [ebp - 8]
call sym.MSVCR80.dll_free
mov eax, dword [ebp + 8]
pop ecx
mov dword [eax], esi
xor eax, eax
jmp 0x7813c37e