Function at 0x14005e310
Capabilities:
Check os version
Query environment variable

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x2b8]
sub rsp, 0x390
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov rax, qword [0x14011d8d0]
xor rax, rsp
mov qword [rbp + 0x280], rax
cmp dword [0x14011dee0], 0
jne 0x14005e6d8
lea rdi, [rsp + 0x50]
xor eax, eax
mov ecx, 0x11c
rep stosb byte [rdi], al
mov dword [rsp + 0x50], 0x11c
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x14005e6d8
mov r13d, 1
mov dword [0x14011dee0], r13d
mov ecx, dword [rsp + 0x54]
mov dword [0x14011dee4], ecx
mov edx, dword [rsp + 0x58]
mov dword [0x14011dee8], edx
movzx eax, word [rbp + 0x64]
mov word [0x14011deec], ax
movzx eax, word [rbp + 0x66]
mov word [0x14011def0], ax
cmp ecx, 5
jne 0x14005e42c
cmp edx, r13d
jne 0x14005e6d8
test byte [rbp + 0x6a], r13b
je 0x14005e3f0
mov ecx, 0x200
movzx eax, word [rbp + 0x68]
and ax, cx
neg ax
sbb eax, eax
add eax, 2
mov dword [0x14011def4], eax
jmp 0x14005e6d8
mov ecx, 0x57
call qword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x14005e40b
mov dword [0x14011def4], 3
jmp 0x14005e42c
mov ecx, 0x56
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, dword [0x14011def4]
mov edx, 4
test eax, eax
cmovne ecx, edx
mov dword [0x14011def4], ecx
cmp dword [0x14011dee4], 6
jb 0x14005e6d8
lea rdi, [rbp + 0x70]
xor eax, eax
mov ecx, 0x208
rep stosb byte [rdi], al
mov r8d, 0x104
lea rdx, [rbp + 0x70]
lea rcx, str._Systemroot_
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x14005e6d8
lea rcx, [0x14011d880]
mov rax, qword [0x14011d880]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x30], rbx
lea rcx, [rbp + 0x70]
lea rax, [rbp + 0x70]
xor r15d, r15d
or rsi, 0xffffffffffffffff
test rax, 0xffffffffffff0000
jne 0x14005e4c5
movzx edi, cx
xor edx, edx
mov ecx, edi
call fcn.1400017e0
test rax, rax
je 0x14005e5b7
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140001f70
mov rbx, qword [rsp + 0x30]
jmp 0x14005e5b7
xor eax, eax
mov rcx, rsi
lea rdi, [rbp + 0x70]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x14005e53a
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x14005e5b7
cmp dword [rdx + 0x10], eax
jge 0x14005e510
cmp dword [rbx - 0xc], eax
jge 0x14005e503
mov ecx, 0x80070057
call fcn.140001000
int3
mov dword [rbx - 0x10], r15d
mov word [rbx], r15w
jmp 0x14005e5b7
mov eax, esi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14005e526
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x30], rbx
jmp 0x14005e5b7
mov r14d, dword [rbx - 0x10]
lea r12, [rbp + 0x70]
sub r12, rbx
sar r12, 1
test ecx, ecx
jns 0x14005e557
mov ecx, 0x80070057
call fcn.140001000
int3
sub r13d, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, ecx
or eax, r13d
jge 0x14005e576
mov edx, ecx
lea rcx, [rsp + 0x30]
call fcn.140001c20
mov rbx, qword [rsp + 0x30]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
lea r13, [rax + rax]
add rdx, rdx
mov r9, r13
cmp r12, r14
ja 0x14005e59b
lea r8, [rbx + r12*2]
call qword [sym.imp.MSVCR100.dll_memmove_s]
jmp 0x14005e5a5
lea r8, [rbp + 0x70]
call qword [sym.imp.MSVCR100.dll_memcpy_s]
cmp edi, dword [rbx - 0xc]
jg 0x14005e6cd
mov dword [rbx - 0x10], edi
mov word [r13 + rbx], r15w
lea r8, str.System32Kernel32.dll
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x40]
call fcn.140002ce0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14005e627
cmp dword [rbx + 0x10], 0
jl 0x14005e618
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14005e618
call fcn.140001b90
mov rdi, rax
mov ecx, esi
lock xadd dword [rbx + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x14005e60d
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + 8]
lea rax, [rdi + 0x18]
mov qword [rsp + 0x30], rax
jmp 0x14005e627
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x30]
call fcn.140001e80
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14005e646
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rdi, qword [rsp + 0x30]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov rbx, rax
test rax, rax
je 0x14005e6b3
mov dword [rsp + 0x38], r15d
lea rdx, str.GetProductInfo
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x14005e69e
movzx r9d, word [0x14011def0]
movzx r8d, word [0x14011deec]
lea rcx, [rsp + 0x38]
mov qword [rsp + 0x20], rcx
mov edx, dword [0x14011dee8]
mov ecx, dword [0x14011dee4]
call rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov r11d, dword [rsp + 0x38]
mov dword [0x14011def4], r11d
lea rdx, [rdi - 0x18]
lock xadd dword [rdx + 0x10], esi
dec esi
test esi, esi
jg 0x14005e6d8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
jmp 0x14005e6d8
mov ecx, 0x80070057
call fcn.140001000
nop
mov rcx, qword [rbp + 0x280]
xor rcx, rsp
call fcn.1400cafa0
lea r11, [rsp + 0x390]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret