Function at 0x40986c
Capabilities:
Check os version

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r14
push rbp
lea rbp, [rax - 0x168]
sub rsp, 0x260
mov rsi, rdx
mov rdi, r8
lea rdx, str.Windows
mov rbx, rcx
call fcn.00403ec4
xor edx, edx
lea rcx, [rsp + 0x24]
mov r8d, pe_nt_image_headers64
call fcn.00424830
lea rcx, [rsp + 0x20]
mov dword [rsp + 0x20], 0x11c
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
xor r14d, r14d
test eax, eax
je 0x409aed
mov ecx, dword [rsp + 0x28]
mov edx, dword [rsp + 0x24]
test rsi, rsi
je 0x4098e7
imul eax, edx, 0x64
add eax, ecx
mov dword [rsi], eax
test rdi, rdi
je 0x4098f2
mov eax, dword [rsp + 0x2c]
mov dword [rdi], eax
mov dil, 1
cmp edx, 6
jne 0x409957
test ecx, ecx
je 0x409947
sub ecx, 1
je 0x409937
sub ecx, 1
je 0x409924
cmp ecx, 1
jne 0x4099d0
lea rax, str.Windows_8.1
lea rdx, str.Windows_Server_2012_R2
jmp 0x4099c0
lea rax, str.Windows_8
lea rdx, str.Windows_Server_2012
jmp 0x4099c0
lea rax, str.Windows_7
lea rdx, str.Windows_Server_2008_R2
jmp 0x4099c0
lea rax, str.Windows_Vista
lea rdx, str.Windows_Server_2008
jmp 0x4099c0
cmp edx, 0xa
jne 0x4099ad
cmp byte [rbp + 0x3a], dil
jne 0x40997e
cmp dword [rsp + 0x2c], 0x55f0
lea rdx, str.Windows_10
lea rax, str.Windows_11
cmovae rdx, rax
jmp 0x4099c8
cmp dword [rsp + 0x2c], 0x4f7c
jb 0x409991
lea rdx, str.Windows_Server_2022
jmp 0x4099c8
cmp dword [rsp + 0x2c], 0x3839
lea rdx, str.Windows_Server_2019
lea rax, str.Windows_Server_2016
cmovbe rdx, rax
jmp 0x4099c8
cmp edx, 0xb
jne 0x4099d0
lea rax, str.Windows_11
lea rdx, str.Windows_Server_2022
cmp byte [rbp + 0x3a], dil
cmove rdx, rax
mov rcx, rbx
call fcn.00403ec4
lea rax, [rbp + 0x58]
mov dword [rbp + 0x50], r14d
lea rcx, [rbp + 0x40]
mov qword [rbp + 0x48], rax
lea rax, [0x004907b0]
mov dword [rbp + 0x54], 0x80
mov qword [rbp + 0x40], rax
mov word [rbp + 0x58], r14w
cmp word [rsp + 0x34], r14w
jne 0x409a13
movzx r8d, word [rsp + 0x2c]
lea rdx, str._build__d
call fcn.004012e8
jmp 0x409a2a
movzx r9d, word [rsp + 0x2c]
lea r8, [rsp + 0x34]
lea rdx, str.__s_build__d
call fcn.004012e8
mov rdx, qword [rbx + 8]
test rdx, rdx
je 0x409a6c
mov ecx, dword [rbp + 0x50]
test ecx, ecx
je 0x409a6c
mov r9d, dword [rbx + 0x10]
lea eax, [r9 + rcx]
cmp eax, dword [rbx + 0x14]
jae 0x409a6c
mov r8d, ecx
lea rcx, [rdx + r9*2]
mov rdx, qword [rbp + 0x48]
add r8, r8
call fcn.00424180
mov eax, dword [rbp + 0x50]
add dword [rbx + 0x10], eax
mov ecx, dword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov word [rax + rcx*2], r14w
lea rcx, [rbp + 0x40]
call fcn.004097b8
test al, al
je 0x409aea
mov rdx, qword [rbx + 8]
test rdx, rdx
je 0x409aa8
mov ecx, dword [rbx + 0x10]
lea eax, [rcx + 4]
cmp eax, dword [rbx + 0x14]
jae 0x409aa8
mov rax, qword [str._on]
mov qword [rdx + rcx*2], rax
add dword [rbx + 0x10], 4
mov ecx, dword [rbx + 0x10]
mov rax, qword [rbx + 8]
mov word [rax + rcx*2], r14w
mov rdx, qword [rbx + 8]
test rdx, rdx
je 0x409aea
mov ecx, dword [rbp + 0x50]
test ecx, ecx
je 0x409aea
mov r9d, dword [rbx + 0x10]
lea eax, [r9 + rcx]
cmp eax, dword [rbx + 0x14]
jae 0x409aea
mov r8d, ecx
lea rcx, [rdx + r9*2]
mov rdx, qword [rbp + 0x48]
add r8, r8
call fcn.00424180
mov ecx, dword [rbp + 0x50]
add dword [rbx + 0x10], ecx
mov edx, dword [rbx + 0x10]
mov rcx, qword [rbx + 8]
mov word [rcx + rdx*2], r14w
mov al, dil
lea r11, [rsp + 0x260]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
mov rsp, r11
pop rbp
ret