Function at 0x140012574
Capabilities:
Get system information on windows
Query environment variable
Set environment variable

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rsi
push rbp
push rdi
push r14
lea rbp, [rsp - 0x47]
sub rsp, 0xc0
mov rax, qword [0x1400922d0]
xor rax, rsp
mov qword [rbp + 0x37], rax
mov rbx, rcx
xor edi, edi
mov qword [rbp - 0x21], rdi
mov qword [rbp - 9], rdi
xor r9d, r9d
lea r8, str.VSPerfGCMode
lea rcx, [rbp - 9]
call fcn.140028408
lea r8d, [rdi + 4]
lea rdx, [rbp + 0x2f]
lea r14, str.COMPLUS_GCHeapCount
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov dword [0x140093a48], eax
mov r9d, 0x20019
mov r8, qword [rbp - 9]
mov rdx, rbx
lea rcx, [rbp - 0x21]
call fcn.140004698
or esi, 0xffffffff
test eax, eax
jns 0x14001262c
cmp dword [0x140093a48], edi
jne 0x1400129a9
lea rdx, [0x14006e820]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea rdx, [0x14006e820]
lea rcx, str.VS_Perf_Session_GCHeapCount
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
jmp 0x1400129a9
or dword [rbp - 0x29], 0xffffffff
lea r8, [rbp - 0x29]
lea rdx, str.IsPrioritizePerformanceEnabled
lea rcx, [rbp - 0x21]
call fcn.140008118
mov ecx, dword [rbp - 0x29]
test eax, eax
cmovs ecx, edi
mov dword [rbp - 0x29], ecx
mov ebx, 3
mov dword [rbp - 0x19], ebx
lea r8, [rbp - 0x19]
lea rdx, str.GCFlight
lea rcx, [rbp - 0x21]
call fcn.140008118
mov ecx, dword [rbp - 0x19]
test eax, eax
cmovs ecx, ebx
mov dword [rbp - 0x19], ecx
cmp dword [0x140093a48], edi
je 0x1400126c7
cmp ecx, 2
jne 0x14001268c
lea rdx, [0x1400794ec]
jmp 0x1400126b1
cmp ecx, 0xa
jne 0x14001269a
lea rdx, [0x1400794f0]
jmp 0x1400126b1
mov ebx, 1
cmp ecx, ebx
lea rdx, [0x1400794f8]
je 0x1400126b1
lea rdx, [0x1400794fc]
lea rcx, str.GCExpConfigUsedInSession
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea rdx, [rbp + 0x2f]
jmp 0x140012989
mov ebx, 1
cmp dword [rbp - 0x29], ebx
jne 0x140012787
cmp ecx, 2
jne 0x1400126e3
lea rdx, [0x140079500]
jmp 0x140012703
cmp ecx, 0xa
jne 0x1400126f1
lea rdx, [0x140079504]
jmp 0x140012703
cmp ecx, ebx
lea rdx, [0x14007950c]
je 0x140012703
lea rdx, [0x140079510]
lea rcx, str.GCExpConfigUsedInSession
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea rcx, [rbp - 1]
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
call fcn.140002950
mov rcx, rax
test rax, rax
je 0x140012a11
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x41], rax
mov r8d, dword [rbp + 0x1f]
lea rdx, [0x140079514]
lea rcx, [rbp - 0x41]
call fcn.140006970
mov rbx, qword [rbp - 0x41]
mov rdx, rbx
lea rcx, str.VS_Perf_Session_GCHeapCount
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, esi
test eax, eax
jg 0x140012996
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x140012996
cmp ecx, 2
jne 0x140012839
mov dword [rbp - 0x15], edi
lea r8, [rbp - 0x15]
lea rdx, str.ServerGCNHeaps
lea rcx, [rbp - 0x21]
call fcn.140008118
test eax, eax
js 0x140012826
call fcn.140002950
mov rcx, rax
test rax, rax
je 0x140012a1c
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x39], rax
mov eax, dword [rbp - 0x15]
test eax, eax
cmovne ebx, eax
mov dword [rbp - 0x15], ebx
mov r8d, ebx
lea rdx, [0x140079514]
lea rcx, [rbp - 0x39]
call fcn.140006970
mov rbx, qword [rbp - 0x39]
mov rdx, rbx
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov rdx, rbx
lea rcx, str.VS_Perf_Session_GCHeapCount
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, esi
test eax, eax
jg 0x140012826
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x14006e820]
lea rcx, str.GCExpConfigUsedInSession
jmp 0x140012990
cmp ecx, 0xa
jne 0x140012953
mov dword [rbp - 0x11], edi
lea r8, [rbp - 0x11]
lea rdx, str.ServerGCNHeaps
lea rcx, [rbp - 0x21]
call fcn.140008118
test eax, eax
js 0x140012947
call fcn.140002950
mov rcx, rax
test rax, rax
je 0x140012a27
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x49], rax
mov r8d, dword [rbp - 0x11]
lea rdx, [0x140079514]
lea rcx, [rbp - 0x49]
call fcn.140006970
mov ecx, dword [rbp - 0x11]
lea eax, [rcx + 0x1312cff]
xor edx, edx
div ecx
mov ebx, eax
call fcn.140002950
mov rcx, rax
test rax, rax
je 0x140012a03
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x31], rax
mov r8d, ebx
lea rdx, [0x140079514]
lea rcx, [rbp - 0x31]
call fcn.140006970
mov rbx, qword [rbp - 0x31]
mov rdx, rbx
lea rcx, str.COMPLUS_GCGen0MaxBudget
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov rdx, qword [rbp - 0x49]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov rdx, qword [rbp - 0x49]
lea rcx, str.VS_Perf_Session_GCHeapCount
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, esi
test eax, eax
jg 0x140012926
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x49]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, esi
test eax, eax
jg 0x140012947
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x140079570]
jmp 0x14001282d
cmp ecx, ebx
lea rcx, str.GCExpConfigUsedInSession
lea rdx, [0x14006dab8]
je 0x14001296c
lea rdx, [0x14006e8ec]
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea rdx, [0x14006e820]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea rdx, [0x14006e820]
lea rcx, str.VS_Perf_Session_GCHeapCount
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov rcx, qword [rbp - 0x21]
test rcx, rcx
je 0x1400129a9
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov qword [rbp - 0x21], rdi
mov rdx, qword [rbp - 9]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, esi
test eax, eax
jg 0x1400129cb
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rbp - 0x21]
test rcx, rcx
je 0x1400129da
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 0x21005
mov rcx, qword [rbp + 0x37]
xor rcx, rsp
call fcn.140001020
lea r11, [rsp + 0xc0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret
mov ecx, 0x80004005
call fcn.1400327c0
nop
jmp 0x140012a10
nop
mov ecx, 0x80004005
call fcn.1400327c0
int3
mov ecx, 0x80004005
call fcn.1400327c0
int3
mov ecx, 0x80004005
call fcn.1400327c0
int3