Function at 0x401280
Capabilities:
Check os version
Create process on windows
Query environment variable

Disassembly:
push rbp
sub rsp, 0x240
lea rbp, [rsp + 0x50]
mov qword [rbp + 0x218], rbx
mov qword [rbp + 0x1e8], rsi
mov qword [rbp + 0x1e0], rdi
mov qword [rbp + 0x1d8], r12
mov qword [rbp + 0x1d0], r13
mov qword [rbp + 0x1c8], r14
mov qword [rbp + 0x1c0], r15
mov rax, qword [0x00408550]
mov qword [rbp + 0x1b0], rax
xor r9d, r9d
mov ebx, edx
mov rsi, rcx
mov edi, r8d
lea rcx, [rbp + 0x28]
lea edx, [r9 + 1]
xor r8d, r8d
mov dword [rbp + 0x28], 0x18
mov qword [rbp + 0x30], 0
mov dword [rbp + 0x38], 1
call qword [sym.imp.KERNEL32.dll_CreateEventA]
test rax, rax
mov r14, rax
je 0x4014fd
xor edx, edx
lea rcx, [rbp + 0x40]
lea r8d, [rdx + 0x68]
call sub.msvcrt.dll_memset
lea rax, str.WinSta0Default
lea rcx, [rbp + 0xb0]
mov r9d, r14d
mov r8d, ebx
mov rdx, rsi
mov qword [rbp + 0x50], rax
mov dword [rbp + 0x40], 0x68
mov word [rbp + 0x80], 5
mov dword [rsp + 0x20], edi
call qword [sym.imp.msvcrt.dll_sprintf]
call qword [sym.imp.KERNEL32.dll_GetEnvironmentStrings]
movzx r9d, byte [rax]
xor r8d, r8d
mov r12, rax
test r9b, r9b
je 0x40138e
mov rdx, rax
nop
nop
nop
mov rdi, rdx
xor eax, eax
mov rcx, 0xffffffffffffffff
repne scasb al, byte [rdi]
not rcx
add r8d, ecx
movsxd rdx, r8d
add rdx, r12
cmp byte [rdx], al
jne 0x401370
lea eax, [r8 + 1]
cdqe
add rax, 0xf
and rax, 0xfffffffffffffff0
call fcn.004056b0
sub rsp, rax
xor esi, esi
xor r13d, r13d
test r9b, r9b
movsx edx, r9b
lea r15, [rsp + 0x50]
je 0x40143b
mov rbx, r12
nop
xor eax, eax
mov rcx, 0xffffffffffffffff
mov rdi, rbx
repne scasb al, byte [rdi]
not rcx
dec rcx
cmp edx, 0x43
mov rdi, rcx
je 0x4013e1
cmp edx, 0x63
jne 0x401411
cmp ecx, 8
jl 0x4013f2
mov rax, qword [rbx]
cmp rax, qword [str.COBANIM]
je 0x40142a
cmp ecx, 6
jl 0x401411
lea rdx, str.COBSW
mov r8d, 6
mov rcx, rbx
call qword [sym.imp.msvcrt.dll__memicmp]
test eax, eax
je 0x40142a
lea eax, [rdi + 1]
movsxd rcx, r13d
mov rdx, rbx
movsxd r8, eax
add rcx, r15
call sub.msvcrt.dll_memcpy
lea r13d, [r13 + rdi + 1]
lea esi, [rsi + rdi + 1]
movsxd rbx, esi
add rbx, r12
movsx edx, byte [rbx]
test edx, edx
jne 0x4013c0
movsxd rax, r13d
lea rdx, [rbp + 0xb0]
xor r9d, r9d
mov byte [rax + r15], 0
lea rax, [rbp + 0x10]
xor r8d, r8d
mov qword [rsp + 0x48], rax
lea rax, [rbp + 0x40]
xor ecx, ecx
mov qword [rsp + 0x40], rax
xor eax, eax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r15
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], 1
call qword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x4014f4
mov rax, qword [rbp + 0x10]
mov qword [rbp], r14
mov qword [rbp + 8], rax
call qword [sym.imp.KERNEL32.dll_GetVersion]
shr eax, 0x10
and ax, 0xc000
cmp ax, 0xc000
jne 0x4014b5
mov edx, 0xffffffff
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
jmp 0x4014cc
xor r8d, r8d
lea rdx, [rbp]
mov r9d, 0xffffffff
lea ecx, [r8 + 2]
call qword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov rcx, qword [rbp + 0x18]
mov edi, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rbp + 0x10]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
jne 0x4014fd
lea eax, [rdi + 1]
jmp 0x4014ff
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
mov rcx, qword [rbp + 0x1b0]
call fcn.00405710
mov rbx, qword [rbp + 0x218]
mov rsi, qword [rbp + 0x1e8]
mov rdi, qword [rbp + 0x1e0]
mov r12, qword [rbp + 0x1d8]
mov r13, qword [rbp + 0x1d0]
mov r14, qword [rbp + 0x1c8]
mov r15, qword [rbp + 0x1c0]
lea rsp, [rbp + 0x1f0]
pop rbp
ret