Function at 0x20012721
Capabilities:
Set environment variable

Disassembly:
push ebp
lea ebp, [esp - 0x74]
sub esp, 0x134
push ebx
push esi
push edi
push 0x2c
push 5
push dword [ebp + 0x7c]
lea eax, [ebp - 0xc0]
push eax
call fcn.2000c4a6
add esp, 0x10
push 0x10
mov esi, eax
pop ecx
lea edi, [ebp - 0x80]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x80]
xor ebx, ebx
or esi, 0xffffffff
xor edi, edi
cmp eax, ebx
mov dword [ebp + 0x6c], esi
mov dword [ebp + 0x70], ebx
mov dword [ebp + 0x68], ebx
mov dword [ebp + 0x60], edi
je 0x20012773
cmp word [eax], bx
je 0x20012773
mov dword [ebp + 0x60], eax
mov edi, eax
mov eax, dword [ebp - 0x7c]
cmp eax, ebx
je 0x20012790
cmp word [eax], bx
je 0x20012790
push eax
call fcn.200042be
cmp eax, esi
pop ecx
mov dword [ebp + 0x6c], eax
jge 0x20012790
mov dword [ebp + 0x6c], esi
mov eax, dword [ebp - 0x78]
cmp eax, ebx
je 0x200127ad
cmp word [eax], bx
je 0x200127ad
push eax
call fcn.200042be
cmp eax, ebx
pop ecx
mov dword [ebp + 0x70], eax
jge 0x200127ad
mov dword [ebp + 0x70], ebx
mov eax, dword [ebp - 0x74]
cmp eax, ebx
je 0x200127c3
cmp word [eax], bx
je 0x200127c3
push eax
call fcn.200042be
pop ecx
mov dword [ebp + 0x68], eax
call fcn.20004772
mov edx, dword [ebp + 0x6c]
cmp edx, esi
movzx ecx, ax
mov dword [ebp + 0x64], ecx
jle 0x2001295f
cmp dword [ebp + 0x70], ebx
je 0x2001289d
cmp edi, ebx
je 0x2001287a
movzx eax, word [edi]
cmp ax, bx
je 0x2001287a
cmp word [edi + 2], 0x3a
jne 0x2001283a
push eax
call fcn.20004235
cmp dword [ebp + 0x68], ebx
pop ecx
movzx esi, ax
jne 0x20012821
push dword [ebp + 0x70]
push dword [ebp + 0x6c]
call fcn.200055f1
test eax, eax
pop ecx
pop ecx
je 0x20012aaf
push esi
push dword [ebp + 0x70]
push dword [ebp + 0x6c]
call fcn.200052f2
add esp, 0xc
neg ax
sbb eax, eax
jmp 0x20012ac3
push 0x9e
lea eax, [ebp - 0x3e]
push ebx
push eax
mov word [ebp - 0x40], bx
call sub.MSVCRT.dll_memset
push dword [ebp + 0x70]
push dword [ebp + 0x6c]
call fcn.20005206
add esp, 0x14
cmp ax, bx
mov word [ebp - 0x40], ax
je 0x2001286a
mov word [ebp - 0x3e], 0x3a
lea eax, [ebp - 0x40]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
jmp 0x20012abf
push dword [ebp + 0x70]
push edx
call fcn.20005206
movzx eax, ax
cmp ax, bx
pop ecx
pop ecx
je 0x20012aaf
push eax
call fcn.200053af
pop ecx
jmp 0x20012abf
cmp cx, dx
jbe 0x20012aaf
push edx
call fcn.20004948
test eax, eax
pop ecx
jne 0x200128cf
push dword [ebp + 0x6c]
call fcn.20004902
test eax, eax
pop ecx
jne 0x200128cf
push dword [ebp + 0x6c]
call fcn.20004924
test eax, eax
pop ecx
je 0x20012aaf
push dword [ebp + 0x6c]
call fcn.200052a9
test eax, eax
pop ecx
je 0x20012aaf
cmp edi, ebx
je 0x20012aaf
cmp word [edi], bx
je 0x20012aaf
push dword [ebp + 0x6c]
call fcn.20005197
cmp dword [ebp + 0x68], ebx
movzx esi, ax
pop ecx
movzx edi, si
jne 0x2001292a
xor ebx, ebx
inc ebx
cmp si, bx
jb 0x20012928
push ebx
push dword [ebp + 0x6c]
call fcn.200055f1
test eax, eax
pop ecx
pop ecx
jne 0x20012922
add esi, 0xffff
inc ebx
cmp bx, di
jbe 0x2001290d
xor ebx, ebx
push 0x9e
lea eax, [ebp - 0x3e]
push ebx
push eax
mov word [ebp - 0x40], bx
call sub.MSVCRT.dll_memset
movzx eax, si
push eax
lea eax, [ebp - 0x40]
push 0x20002b9c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
lea eax, [ebp - 0x40]
push eax
push dword [ebp + 0x60]
jmp 0x2001286f
cmp dword [ebp + 0x70], ebx
je 0x20012a02
cmp edi, ebx
je 0x20012aaf
cmp word [edi], bx
je 0x20012aaf
xor edi, edi
cmp cx, bx
mov dword [ebp + 0x70], ebx
jbe 0x200129e6
push edi
call fcn.20004948
test eax, eax
pop ecx
jne 0x200129a4
push edi
call fcn.20004902
test eax, eax
pop ecx
jne 0x200129a4
push edi
call fcn.20004924
test eax, eax
pop ecx
je 0x200129df
push edi
call fcn.200052a9
test eax, eax
pop ecx
je 0x200129df
push edi
call fcn.20005197
xor ebx, ebx
movzx esi, ax
inc ebx
cmp si, bx
pop ecx
jb 0x200129dd
cmp dword [ebp + 0x68], 0
jne 0x200129d4
push ebx
push edi
call fcn.200055f1
test eax, eax
pop ecx
pop ecx
je 0x200129d7
inc dword [ebp + 0x70]
inc ebx
cmp bx, si
jbe 0x200129c1
xor ebx, ebx
inc edi
cmp di, word [ebp + 0x64]
jb 0x20012983
push 0x9e
lea eax, [ebp - 0x3e]
push ebx
push eax
mov word [ebp - 0x40], bx
call sub.MSVCRT.dll_memset
movzx eax, word [ebp + 0x70]
jmp 0x20012940
mov eax, dword [ebp - 0x70]
cmp eax, ebx
je 0x20012a20
movzx eax, word [eax]
cmp ax, bx
je 0x20012a20
push eax
call fcn.20004235
pop ecx
mov ecx, dword [ebp + 0x64]
movzx esi, ax
jmp 0x20012a22
xor esi, esi
cmp edi, ebx
je 0x20012a99
movzx eax, word [edi]
cmp ax, bx
je 0x20012a99
cmp ax, 0x5c
jne 0x20012a6a
push esi
push edi
call fcn.20012471
cmp eax, 1
pop ecx
pop ecx
je 0x20012aaf
mov eax, dword [ebp + 0x68]
cmp eax, 1
je 0x20012a63
cmp eax, 2
je 0x20012a63
cmp eax, 3
jne 0x20012aaf
push esi
push dword [ebp + 0x64]
call fcn.20011da3
pop ecx
jmp 0x20012897
push esi
push eax
push dword [ebp + 0x64]
jmp 0x20012ab7
push 0x9e
lea eax, [ebp - 0x3e]
push ebx
push eax
mov word [ebp - 0x40], bx
call sub.MSVCRT.dll_memset
movzx eax, word [ebp + 0x64]
push eax
lea eax, [ebp - 0x40]
push 0x20002b9c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
jmp 0x2001286a
mov eax, dword [ebp + 0x68]
cmp eax, 1
je 0x20012ab4
cmp eax, 2
je 0x20012ab4
cmp eax, 3
jne 0x20012aaf
push esi
push ecx
jmp 0x20012a58
xor eax, eax
inc eax
jmp 0x20012ac4
push esi
push eax
push ecx
call fcn.200126a9
add esp, 0xc
neg eax
sbb eax, eax
inc eax
pop edi
pop esi
pop ebx
add ebp, 0x74
leave
ret