Function at 0x140007c10
Capabilities:
Check os version

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
sub rsp, 0x160
xor eax, eax
mov esi, ecx
lea rcx, [rsp + 0x20]
mov rbp, rdx
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x24], eax
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x2c], eax
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x34], eax
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x3c], eax
call fcn.1400072b0
test eax, eax
js 0x140007c87
mov ebx, dword [rsp + 0x24]
call qword [sym.imp.ntoskrnl.exe_IoGetCurrentProcess]
add rax, rbx
mov rdi, rax
cmp qword [rax + 8], rax
lea rcx, [rax + 8]
je 0x140007c87
mov edx, dword [rsp + 0x20]
sub rdi, rbx
cmp dword [rdx + rdi], esi
je 0x140007c9f
mov rdi, qword [rcx]
cmp qword [rdi + 8], rax
lea rcx, [rdi + 8]
jne 0x140007c72
mov eax, 0xc0000001
mov rbx, qword [rsp + 0x180]
add rsp, 0x160
pop rdi
pop rsi
pop rbp
ret
xor eax, eax
lea rcx, [rsp + 0x44]
xor ebx, ebx
xor edx, edx
mov r8d, 0x118
mov esi, 0xc0000001
mov word [rsp + 0x20], bx
mov qword [rsp + 0x22], rax
mov dword [rsp + 0x2a], eax
mov word [rsp + 0x2e], ax
mov dword [rsp + 0x40], 0x11c
call fcn.14000aca0
lea rdx, str.RtlGetVersion
lea rcx, [rsp + 0x20]
call qword [sym.imp.ntoskrnl.exe_RtlInitUnicodeString]
lea rcx, [rsp + 0x20]
call qword [sym.imp.ntoskrnl.exe_MmGetSystemRoutineAddress]
test rax, rax
je 0x140007dab
lea rcx, [rsp + 0x40]
call rax
mov esi, eax
test eax, eax
js 0x140007dcb
mov eax, dword [rsp + 0x4c]
mov qword [rsp + 0x198], rbx
cmp eax, 0xa28
je 0x140007e6c
cmp eax, 0xece
jne 0x140007dd2
cmp dword [rsp + 0x44], 5
jne 0x140007e6c
cmp dword [rsp + 0x48], 2
jne 0x140007e6c
mov rdi, qword [rdi + 0x1f0]
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_MmIsAddressValid]
test al, al
je 0x140007c87
mov rdi, qword [rdi + 0x28]
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_MmIsAddressValid]
test al, al
je 0x140007c87
mov rcx, qword [rdi]
call qword [sym.imp.ntoskrnl.exe_MmIsAddressValid]
test al, al
je 0x140007c87
mov rcx, qword [rdi]
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.ntoskrnl.exe_MmIsAddressValid]
test al, al
je 0x140007c87
mov rax, qword [rdi]
mov rbx, qword [rax + 0x30]
mov qword [rsp + 0x198], rbx
jmp 0x140007e6c
lea r8, [rsp + 0x4c]
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x44]
xor r9d, r9d
call qword [sym.imp.ntoskrnl.exe_PsGetVersion]
test al, al
jne 0x140007d0c
mov eax, esi
jmp 0x140007c8c
cmp eax, 0x1770
jb 0x140007e6c
cmp dword [rsp + 0x44], 6
jb 0x140007e6c
lea rdx, [rsp + 0x190]
lea rcx, str.ntoskrnl.exe
call fcn.140007100
test rax, rax
jne 0x140007e37
lea rdx, [rsp + 0x190]
lea rcx, str.ntkrnlpa.exe
call fcn.140007100
test rax, rax
jne 0x140007e37
lea rdx, [rsp + 0x190]
lea rcx, str.ntkrpamp.exe
call fcn.140007100
test rax, rax
je 0x140007c87
lea rdx, str.PsReferenceProcessFilePointer
mov rcx, rax
call fcn.140007200
test rax, rax
je 0x140007c87
lea rdx, [rsp + 0x198]
mov rcx, rdi
call rax
test eax, eax
js 0x140007c87
mov rbx, qword [rsp + 0x198]
mov rcx, rbx
call qword [sym.imp.ntoskrnl.exe_MmIsAddressValid]
test al, al
je 0x140007c87
mov rcx, qword [rsp + 0x198]
cmp word [rcx + 0x58], 0
je 0x140007c87
cmp word [rcx + 0x5a], 0
je 0x140007c87
mov rcx, qword [rcx + 0x60]
call qword [sym.imp.ntoskrnl.exe_MmIsAddressValid]
test al, al
je 0x140007c87
mov rdx, qword [rsp + 0x198]
movzx eax, word [rdx + 0x58]
add eax, 2
cmp eax, 0x208
ja 0x140007c87
mov rdx, qword [rdx + 0x60]
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
add rcx, rcx
cmp rcx, 0x208
ja 0x140007c87
lea rcx, [rbp + 0x108]
movzx eax, word [rdx]
add rcx, 2
add rdx, 2
mov word [rcx - 2], ax
test ax, ax
jne 0x140007ef1
xor eax, eax
jmp 0x140007c8c