Function at 0x7813c2b8
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 0x7813c2eb
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 0x7813c370
push ebx
push edi
mov edi, dword [eax]
cmp edi, esi
mov dword [ebp - 8], edi
je 0x7813c360
push 0x3d
push edi
call sym.MSVCR80.dll_wcschr
mov ebx, eax
cmp ebx, esi
pop ecx
pop ecx
je 0x7813c360
cmp edi, ebx
je 0x7813c360
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 0x7813c332
mov edi, eax
call fcn.7813c25b
mov edi, dword [ebp - 8]
mov dword [sym.MSVCR80.dll__wenviron], eax
cmp eax, esi
jne 0x7813c3ae
cmp dword [ebp + 0xc], esi
mov eax, dword [sym.MSVCR80.dll__environ]
je 0x7813c373
cmp eax, esi
je 0x7813c373
call fcn.781398fc
mov dword [0x781c3b2c], eax
call fcn.781336b6
test eax, eax
jge 0x7813c3ae
call fcn.78139877
test eax, eax
je 0x7813c3ae
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 0x7813c617
cmp eax, esi
jne 0x7813c39b
push 4
call sym.MSVCR80.dll__malloc_crt
cmp eax, esi
pop ecx
mov dword [sym.MSVCR80.dll__environ], eax
je 0x7813c36b
mov dword [eax], esi
cmp dword [sym.MSVCR80.dll__wenviron], esi
jne 0x7813c3ae
push 4
call sym.MSVCR80.dll__malloc_crt
cmp eax, esi
pop ecx
mov dword [sym.MSVCR80.dll__wenviron], eax
je 0x7813c36b
mov dword [eax], esi
mov eax, dword [sym.MSVCR80.dll__wenviron]
cmp eax, esi
mov dword [ebp - 0x18], eax
je 0x7813c36b
sub ebx, edi
sar ebx, 1
push edi
mov edi, ebx
mov dword [ebp - 0x14], ebx
call fcn.7813c20a
mov ebx, eax
cmp ebx, esi
pop ecx
jl 0x7813c425
mov edi, dword [ebp - 0x18]
cmp dword [edi], esi
je 0x7813c425
lea edi, [edi + ebx*4]
push dword [edi]
call sym.MSVCR80.dll_free
cmp dword [ebp - 0xc], esi
pop ecx
jne 0x7813c402
mov eax, dword [ebp - 8]
mov dword [edi], eax
mov eax, dword [ebp + 8]
mov dword [eax], esi
jmp 0x7813c478
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 0x7813c3f6
cmp ebx, 0x3fffffff
jae 0x7813c478
push 4
push ebx
push dword [sym.MSVCR80.dll__wenviron]
call sym.MSVCR80.dll__recalloc_crt
add esp, 0xc
cmp eax, esi
je 0x7813c478
jmp 0x7813c473
cmp dword [ebp - 0xc], esi
jne 0x7813c609
cmp ebx, esi
jge 0x7813c434
neg ebx
lea eax, [ebx + 2]
cmp eax, ebx
jl 0x7813c36b
cmp eax, 0x3fffffff
jae 0x7813c36b
push eax
push 4
push dword [sym.MSVCR80.dll__wenviron]
call sym.MSVCR80.dll__recalloc_crt
add esp, 0xc
cmp eax, esi
je 0x7813c36b
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 0x7813c5ee
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 0x7813c5ee
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 0x7813c4cc
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 [0x781c1b18], 1
jne 0x7813c50e
mov eax, dword [ebp - 0xc]
neg eax
sbb eax, eax
not eax
and eax, ebx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
test eax, eax
jne 0x7813c50e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x78
jne 0x7813c50a
mov dword [0x781c1b18], esi
jmp 0x7813c51a
or dword [ebp - 4], 0xffffffff
cmp dword [0x781c1b18], esi
jne 0x7813c5d6
push esi
push esi
push esi
push esi
push 0xffffffffffffffff
push edi
mov edi, dword [sym.imp.KERNEL32.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 0x7813c5bd
push 1
push eax
call sym.MSVCR80.dll__calloc_crt
cmp eax, esi
pop ecx
pop ecx
mov dword [ebp - 0x18], eax
je 0x7813c5bd
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 0x7813c5bd
cmp dword [ebp - 0xc], esi
jne 0x7813c59d
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 0x7813c5bd
push 1
push eax
call sym.MSVCR80.dll__calloc_crt
cmp eax, esi
pop ecx
pop ecx
mov dword [ebp - 0x14], eax
je 0x7813c5bd
push esi
push esi
push dword [ebp - 0x10]
push eax
push 0xffffffffffffffff
push ebx
push esi
push esi
call edi
test eax, eax
jne 0x7813c59d
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 4], 0xffffffff
je 0x7813c5c1
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.KERNEL32.dll_SetEnvironmentVariableA]
test eax, eax
jne 0x7813c5c1
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 0x7813c5e7
call sym.MSVCR80.dll__errno
mov dword [eax], 0x2a
push edi
call sym.MSVCR80.dll_free
pop ecx
cmp dword [ebp - 0xc], esi
je 0x7813c601
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 0x7813c36e
push dword [ebp - 8]
call sym.MSVCR80.dll_free
mov eax, dword [ebp + 8]
pop ecx
mov dword [eax], esi
xor eax, eax
jmp 0x7813c36e