Function at 0x1400361f4
Capabilities:
Check os version
Link many functions at runtime

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x150
mov rax, qword [0x1400e5430]
xor rax, rsp
mov qword [rsp + 0x140], rax
mov rbx, rcx
xor edx, edx
add rcx, 0x10
call fcn.140036d58
lea rcx, [rbx + 0x30]
xor edx, edx
call fcn.140036dac
lea rcx, str.PSAPI.DLL
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
xor r14d, r14d
mov r15d, 2
mov qword [rbx + 8], rax
test rax, rax
je 0x1400362f5
lea rcx, [rbx + 0x10]
xor r8d, r8d
mov edx, 0x100
call fcn.140036f0c
lea rcx, [rbx + 0x30]
xor r8d, r8d
mov edx, 0x100
mov dword [rbx + 0x28], r14d
call fcn.140036fac
mov rcx, qword [rbx + 8]
lea rdx, str.EnumProcesses
mov dword [rbx + 0x48], r14d
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.EnumProcessModules
mov qword [rbx + 0x50], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetModuleFileNameExW
mov qword [rbx + 0x58], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rcx, [rsp + 0x20]
mov qword [rbx + 0x60], rax
mov dword [rsp + 0x20], 0x114
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [rsp + 0x24], 5
jb 0x1400362ee
mov eax, dword [rsp + 0x28]
neg eax
sbb ecx, ecx
and ecx, r15d
add ecx, r15d
mov dword [rbx + 0x4c], ecx
jmp 0x1400362f5
mov dword [rbx + 0x4c], 8
lea rcx, [0x1400b5648]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [rbx + 0x68], rax
test rax, rax
je 0x1400363c9
or rcx, 0xffffffffffffffff
lea rdx, str.CreateToolhelp32Snapshot
mov qword [rbx + 0x70], rcx
mov qword [rbx + 0x78], rcx
mov qword [rbx + 0x80], rcx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x68]
lea rdx, str.Thread32First
mov qword [rbx + 0x718], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x68]
lea rdx, str.Thread32Next
mov qword [rbx + 0x740], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x68]
lea rdx, str.Process32FirstW
mov qword [rbx + 0x748], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x68]
lea rdx, str.Process32NextW
mov qword [rbx + 0x720], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x68]
lea rdx, str.Module32FirstW
mov qword [rbx + 0x728], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x68]
lea rdx, str.Module32NextW
mov qword [rbx + 0x730], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x738], rax
mov dword [rbx + 4], r14d
cmp qword [rbx + 8], r14
je 0x1400363ed
cmp qword [rbx + 0x50], r14
je 0x1400363ed
cmp qword [rbx + 0x58], r14
je 0x1400363ed
cmp qword [rbx + 0x60], r14
mov eax, r14d
cmovne eax, r15d
mov dword [rbx + 4], eax
cmp qword [rbx + 0x68], r14
je 0x14003642d
cmp qword [rbx + 0x718], r14
je 0x14003642d
cmp qword [rbx + 0x728], r14
je 0x14003642d
cmp qword [rbx + 0x730], r14
je 0x14003642d
cmp qword [rbx + 0x738], r14
je 0x14003642d
cmp qword [rbx + 0x740], r14
je 0x14003642d
cmp qword [rbx + 0x748], r14
je 0x14003642d
or dword [rbx + 4], 4
test byte [rbx + 4], 4
mov dword [rbx], r14d
je 0x14003643e
mov dword [rbx], 4
jmp 0x14003644b
test byte [rbx + 4], r15b
mov ecx, r14d
cmovne ecx, r15d
mov dword [rbx], ecx
mov rax, rbx
mov rcx, qword [rsp + 0x140]
xor rcx, rsp
call fcn.14007e1c0
lea r11, [rsp + 0x150]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r15
pop r14
pop rdi
ret