Function at 0x1400cab70
Capabilities:
Check os version

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x78
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov rbp, rcx
cmp qword [rcx + 0x100], 0
je 0x1400cb617
cmp qword [rcx + 0x108], 0
je 0x1400cb617
cmp qword [rcx + 0x338], 0
je 0x1400cb617
xor r15d, r15d
mov ebx, r15d
mov dword [rsp + 0xc0], ebx
mov r14d, r15d
mov dword [rsp + 0xd8], r15d
call fcn.1401fa4b0
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400cabef
mov ecx, 0x80004005
call fcn.140003d20
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea r13, [0x140273028]
mov rsi, r13
or r12, 0xffffffffffffffff
shr rsi, 0x10
jne 0x1400cac37
movzx edi, r13w
mov ecx, edi
call fcn.1401fc234
test rax, rax
je 0x1400cac57
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x38]
call fcn.140007610
jmp 0x1400cac57
xor eax, eax
mov rcx, r12
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x38]
call fcn.140007880
nop
call fcn.1401fa4b0
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400cac77
mov ecx, 0x80004005
call fcn.140003d20
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
test rsi, rsi
jne 0x1400cacb0
movzx edi, r13w
mov ecx, edi
call fcn.1401fc234
test rax, rax
je 0x1400cacd0
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140007610
jmp 0x1400cacd0
xor eax, eax
mov rcx, r12
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x30]
call fcn.140007880
nop
mov r13d, r15d
mov dword [rsp + 0xd0], r15d
mov dword [rbp + 0x688], r15d
mov rax, qword [rbp + 0x108]
mov rdi, qword [rax + 0x100]
test rdi, rdi
je 0x1400cad23
mov rsi, rdi
test rdi, rdi
je 0x1400cad1d
mov rdi, qword [rdi]
mov rsi, qword [rsi + 0x10]
test rsi, rsi
je 0x1400cad16
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x28]
test eax, eax
je 0x1400cad26
test rdi, rdi
je 0x1400cad23
jmp 0x1400cacf5
call fcn.1401f8920
int3
mov rsi, r15
mov dword [rsp + 0x20], r15d
lea r9, str.0r__
lea r8, str.0r__
xor edx, edx
mov rcx, rsi
call fcn.140227810
test rax, rax
je 0x1400cad56
mov rcx, rax
call fcn.14019d470
mov dword [rbp + 0x688], eax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x14b
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
mov esi, 1
mov edx, esi
lea rcx, [rbp + 0x3e8]
call fcn.1401ed86c
mov ecx, r15d
mov dword [rsp + 0xc8], ecx
lea r8, [0x140318ba0]
cmp dword [0x140326104], 0
jne 0x1400cadc0
mov dword [0x140326100], 0x114
lea rcx, [0x140326100]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov ecx, dword [rsp + 0xc8]
lea r8, [0x140318ba0]
cmp dword [0x140326104], 6
jne 0x1400cadd9
cmp dword [0x140326108], 0
jne 0x1400cadd9
mov eax, 0x18
jmp 0x1400cadde
mov eax, 0x1b
cmp ecx, eax
jge 0x1400cb4fe
mov edi, esi
shl edi, cl
mov rbx, r15
mov qword [rsp + 0x50], rbx
mov edx, dword [rbp + 0x688]
mov rax, qword [rbp + 0x338]
mov rcx, qword [rax + 0x30]
test rcx, rcx
je 0x1400cb4b9
mov rsi, qword [rcx + 0x208]
test rsi, rsi
je 0x1400cb4ab
mov rcx, r15
mov rax, rsi
test edx, edx
je 0x1400cae34
test edx, 0x180
jne 0x1400cae34
cmp dword [rax], edx
je 0x1400cae58
jmp 0x1400cae39
cmp dword [rax + 4], ebx
jne 0x1400cae58
add rcx, 1
add rax, 8
cmp rcx, 7
jl 0x1400cae22
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400cb4c0
test rcx, rcx
js 0x1400cb48f
test dword [rsi + rcx*8 + 4], edi
je 0x1400cb49d
mov eax, r15d
mov rcx, r8
cmp dword [rcx], edi
je 0x1400cae83
add eax, 1
add rcx, 0x14
cmp eax, 0x1b
jb 0x1400cae71
jmp 0x1400cae92
cdqe
lea rcx, [rax + rax*4]
lea rbx, [r8 + rcx*4]
mov qword [rsp + 0x50], rbx
mov rsi, qword [rbp + 0x100]
xor eax, eax
mov rcx, r12
lea r13, [0x140273028]
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x30]
call fcn.140007880
call fcn.1401ed45c
movzx r9d, word [rsi + 0x53c]
mov r8d, 0xc20
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d62c0
xor r11d, r11d
mov rdi, r13
mov r9, qword [rsp + 0x30]
mov rsi, r9
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x1400caeff
sbb r11d, r11d
sbb r11d, 0xffffffff
test r11d, r11d
sete al
test al, al
je 0x1400caf2c
call fcn.1401ed45c
mov r9w, 0x409
mov r8d, 0xc20
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d62c0
mov r9, qword [rsp + 0x30]
movzx r8d, word [rbx + 8]
mov eax, dword [rbx + 4]
mov dword [rsp + 0x20], eax
lea rdx, str._d__s___d_Hz
lea rcx, [rsp + 0x38]
call fcn.1400040e0
mov eax, dword [rbx + 0xc]
test eax, eax
je 0x1400cb0ec
sub eax, 1
je 0x1400cb058
sub eax, 1
je 0x1400cb00c
sub eax, 1
je 0x1400cafc0
cmp eax, 1
jne 0x1400cb177
mov rcx, qword [rbp + 0x100]
bt dword [rcx + 0x10], 0x1c
jae 0x1400cafa4
add rcx, 0x530
mov r9d, 0xc1d
mov r8d, 0xfba
lea rdx, [rsp + 0x30]
call fcn.1400e4ef0
jmp 0x1400cb177
add rcx, 0x530
mov r8d, 0xc1d
lea rdx, [rsp + 0x30]
call fcn.1400e4e50
jmp 0x1400cb177
mov rcx, qword [rbp + 0x100]
bt dword [rcx + 0x10], 0x1c
jae 0x1400caff0
add rcx, 0x530
mov r9d, 0xc1b
mov r8d, 0xfb8
lea rdx, [rsp + 0x30]
call fcn.1400e4ef0
jmp 0x1400cb177
add rcx, 0x530
mov r8d, 0xc1b
lea rdx, [rsp + 0x30]
call fcn.1400e4e50
jmp 0x1400cb177
mov rcx, qword [rbp + 0x100]
bt dword [rcx + 0x10], 0x1c
jae 0x1400cb03c
add rcx, 0x530
mov r9d, 0xc1c
mov r8d, 0xfb9
lea rdx, [rsp + 0x30]
call fcn.1400e4ef0
jmp 0x1400cb177
add rcx, 0x530
mov r8d, 0xc1c
lea rdx, [rsp + 0x30]
call fcn.1400e4e50
jmp 0x1400cb177
mov rsi, qword [rbp + 0x100]
xor eax, eax
mov rcx, r12
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x30]
call fcn.140007880
call fcn.1401ed45c
movzx r9d, word [rsi + 0x53c]
mov r8d, 0xc1f
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d62c0
xor r11d, r11d
mov rdi, r13
mov rsi, qword [rsp + 0x30]
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x1400cb0bb
sbb r11d, r11d
sbb r11d, 0xffffffff
test r11d, r11d
sete al
test al, al
je 0x1400cb177
call fcn.1401ed45c
mov r9w, 0x409
mov r8d, 0xc1f
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d62c0
jmp 0x1400cb177
mov rsi, qword [rbp + 0x100]
xor eax, eax
mov rcx, r12
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x30]
call fcn.140007880
call fcn.1401ed45c
movzx r9d, word [rsi + 0x53c]
mov r8d, 0xc1e
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d62c0
xor r11d, r11d
mov rdi, r13
mov rsi, qword [rsp + 0x30]
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x1400cb14f
sbb r11d, r11d
sbb r11d, 0xffffffff
test r11d, r11d
sete al
test al, al
je 0x1400cb177
call fcn.1401ed45c
mov r9w, 0x409
mov r8d, 0xc1e
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d62c0
call fcn.1401fa4b0
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x1400cb4f3
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rdx, [0x140273034]
test rdx, 0xffffffffffff0000
jne 0x1400cb1d0
movzx edi, dx
mov ecx, edi
call fcn.1401fc234
test rax, rax
je 0x1400cb1ed
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.140007610
jmp 0x1400cb1ed
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x48]
call fcn.140007880
nop
call fcn.1401fa4b0
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x1400cb4e8
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
lea rdx, [0x14027302c]
test rdx, 0xffffffffffff0000
jne 0x1400cb246
movzx edi, dx
mov ecx, edi
call fcn.1401fc234
test rax, rax
je 0x1400cb263
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140007610
jmp 0x1400cb263
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x40]
call fcn.140007880
nop
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x60]
call fcn.14001bf80
nop
lea r8, [rsp + 0x48]
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.14001bf80
nop
mov r12, qword [rax]
movsxd r14, dword [r12 - 0x10]
mov rbx, r12
mov rdi, qword [rsp + 0x38]
sub rbx, rdi
sar rbx, 1
mov r13d, dword [rdi - 0x10]
lea esi, [r13 + r14]
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, esi
or eax, ecx
jge 0x1400cb2cc
mov edx, esi
lea rcx, [rsp + 0x38]
call fcn.140003d40
mov rdi, qword [rsp + 0x38]
cmp rbx, r13
ja 0x1400cb2d5
lea r12, [rdi + rbx*2]
mov rdx, r14
add rdx, rdx
lea rcx, [rdi + r13*2]
mov r9, rdx
mov r8, r12
call fcn.1402279d0
test esi, esi
js 0x1400cb4dd
cmp esi, dword [rdi - 0xc]
jg 0x1400cb4dd
mov dword [rdi - 0x10], esi
movsxd rax, esi
mov word [rdi + rax*2], 0
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
or r12, 0xffffffffffffffff
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1400cb32d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400cb34f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400cb371
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400cb392
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov edi, r15d
xor r9d, r9d
xor r8d, r8d
mov edx, 0x146
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
jle 0x1400cb408
mov rsi, qword [rsp + 0x50]
nop
nop
nop
movsxd r8, edi
xor r9d, r9d
mov edx, 0x150
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
test rax, rax
je 0x1400cb3e7
movzx ecx, word [rsi + 8]
cmp word [rax + 8], cx
ja 0x1400cb40d
add edi, 1
xor r9d, r9d
xor r8d, r8d
mov edx, 0x146
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
cmp edi, eax
jl 0x1400cb3c0
jmp 0x1400cb40d
mov rsi, qword [rsp + 0x50]
movsxd rdi, edi
mov r9, qword [rsp + 0x38]
mov r8, rdi
mov edx, 0x14a
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
mov r9, rsi
mov r8, rdi
mov edx, 0x151
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
mov r13d, dword [rsp + 0xd0]
add r13d, 1
mov dword [rsp + 0xd0], r13d
mov eax, dword [rsi + 4]
mov ebx, dword [rsp + 0xc0]
cmp eax, 0xac44
mov esi, 1
cmove ebx, esi
mov dword [rsp + 0xc0], ebx
mov r14d, dword [rsp + 0xd8]
cmp eax, 0xbb80
cmove r14d, esi
mov dword [rsp + 0xd8], r14d
jmp 0x1400cb4c0
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400cb4c0
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400cb4c0
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400cb4c0
mov ebx, dword [rsp + 0xc0]
mov ecx, dword [rsp + 0xc8]
add ecx, 1
mov dword [rsp + 0xc8], ecx
lea r8, [0x140318ba0]
jmp 0x1400cad92
mov ecx, 0x80070057
call fcn.140003d20
nop
mov ecx, 0x80004005
call fcn.140003d20
nop
mov ecx, 0x80004005
call fcn.140003d20
int3
mov rax, qword [rbp + 0x338]
mov ecx, dword [rax + 0x78]
test ecx, ecx
je 0x1400cb5a2
mov ebx, r13d
test ecx, ecx
je 0x1400cb59b
nop
nop
mov rax, qword [rbp + 0x338]
cmp r15d, dword [rax + 0x78]
jae 0x1400cb581
mov rdx, qword [rax + 0x70]
test rdx, rdx
je 0x1400cb581
mov eax, r15d
lea rcx, [rax + rax*8]
lea rsi, [rdx + rcx*8]
test rsi, rsi
je 0x1400cb581
movsxd rdi, ebx
mov r9, qword [rsi]
mov r8, rdi
mov edx, 0x14a
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
lea r9, [rsi + 0x30]
mov r8, rdi
mov edx, 0x151
mov rcx, qword [rbp + 0x428]
call qword [sym.imp.USER32.dll_SendMessageW]
add ebx, 1
add r13d, 1
add r15d, 1
mov rax, qword [rbp + 0x338]
cmp r15d, dword [rax + 0x78]
jb 0x1400cb520
mov ebx, dword [rsp + 0xc0]
jmp 0x1400cb5a2
mov ebx, dword [rsp + 0xc0]
cmp r13d, 1
jg 0x1400cb5b6
xor edx, edx
lea rcx, [rbp + 0x3e8]
call fcn.1401ed86c
lea rcx, [rbp + 0x490]
mov edx, ebx
call fcn.1401ed86c
lea rcx, [rbp + 0x538]
mov edx, r14d
call fcn.1401ed86c
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400cb5f6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r12d
add r12d, 0xffffffff
test r12d, r12d
jg 0x1400cb617
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rsp, 0x78
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret