Function at 0x1400c54f0
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 0x1400c5f97
cmp qword [rcx + 0x108], 0
je 0x1400c5f97
cmp qword [rcx + 0x338], 0
je 0x1400c5f97
xor r15d, r15d
mov ebx, r15d
mov dword [rsp + 0xc0], ebx
mov r14d, r15d
mov dword [rsp + 0xd8], r15d
call fcn.1401e9268
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400c556f
mov ecx, 0x80004005
call fcn.140003c70
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea r13, [0x140260b08]
mov rsi, r13
or r12, 0xffffffffffffffff
shr rsi, 0x10
jne 0x1400c55b7
movzx edi, r13w
mov ecx, edi
call fcn.1401eb134
test rax, rax
je 0x1400c55d7
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x38]
call fcn.1400074b0
jmp 0x1400c55d7
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.140007720
nop
call fcn.1401e9268
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400c55f7
mov ecx, 0x80004005
call fcn.140003c70
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
test rsi, rsi
jne 0x1400c5630
movzx edi, r13w
mov ecx, edi
call fcn.1401eb134
test rax, rax
je 0x1400c5650
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1400074b0
jmp 0x1400c5650
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.140007720
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 0x1400c56a3
mov rsi, rdi
test rdi, rdi
je 0x1400c569d
mov rdi, qword [rdi]
mov rsi, qword [rsi + 0x10]
test rsi, rsi
je 0x1400c5696
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x28]
test eax, eax
je 0x1400c56a6
test rdi, rdi
je 0x1400c56a3
jmp 0x1400c5675
call fcn.1401e7838
int3
mov rsi, r15
mov dword [rsp + 0x20], r15d
lea r9, str._a__
lea r8, str._a__
xor edx, edx
mov rcx, rsi
call fcn.140216fa0
test rax, rax
je 0x1400c56d6
mov rcx, rax
call fcn.14018c3e0
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.1401dc77c
mov ecx, r15d
mov dword [rsp + 0xc8], ecx
lea r8, [0x140303b50]
cmp dword [0x140311024], 0
jne 0x1400c5740
mov dword [0x140311020], 0x114
lea rcx, [0x140311020]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov ecx, dword [rsp + 0xc8]
lea r8, [0x140303b50]
cmp dword [0x140311024], 6
jne 0x1400c5759
cmp dword [0x140311028], 0
jne 0x1400c5759
mov eax, 0x18
jmp 0x1400c575e
mov eax, 0x1b
cmp ecx, eax
jge 0x1400c5e7e
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 0x1400c5e39
mov rsi, qword [rcx + 0x208]
test rsi, rsi
je 0x1400c5e2b
mov rcx, r15
mov rax, rsi
test edx, edx
je 0x1400c57b4
test edx, 0x180
jne 0x1400c57b4
cmp dword [rax], edx
je 0x1400c57d8
jmp 0x1400c57b9
cmp dword [rax + 4], ebx
jne 0x1400c57d8
add rcx, 1
add rax, 8
cmp rcx, 7
jl 0x1400c57a2
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400c5e40
test rcx, rcx
js 0x1400c5e0f
test dword [rsi + rcx*8 + 4], edi
je 0x1400c5e1d
mov eax, r15d
mov rcx, r8
cmp dword [rcx], edi
je 0x1400c5803
add eax, 1
add rcx, 0x14
cmp eax, 0x1b
jb 0x1400c57f1
jmp 0x1400c5812
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, [0x140260b08]
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x30]
call fcn.140007720
call fcn.1401dc36c
movzx r9d, word [rsi + 0x53c]
mov r8d, 0xc20
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d0d70
xor r11d, r11d
mov rdi, r13
mov r9, qword [rsp + 0x30]
mov rsi, r9
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x1400c587f
sbb r11d, r11d
sbb r11d, 0xffffffff
test r11d, r11d
sete al
test al, al
je 0x1400c58ac
call fcn.1401dc36c
mov r9w, 0x409
mov r8d, 0xc20
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d0d70
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.140004020
mov eax, dword [rbx + 0xc]
test eax, eax
je 0x1400c5a6c
sub eax, 1
je 0x1400c59d8
sub eax, 1
je 0x1400c598c
sub eax, 1
je 0x1400c5940
cmp eax, 1
jne 0x1400c5af7
mov rcx, qword [rbp + 0x100]
bt dword [rcx + 0x10], 0x1c
jae 0x1400c5924
add rcx, 0x530
mov r9d, 0xc1d
mov r8d, 0xfba
lea rdx, [rsp + 0x30]
call fcn.1400df7f0
jmp 0x1400c5af7
add rcx, 0x530
mov r8d, 0xc1d
lea rdx, [rsp + 0x30]
call fcn.1400df750
jmp 0x1400c5af7
mov rcx, qword [rbp + 0x100]
bt dword [rcx + 0x10], 0x1c
jae 0x1400c5970
add rcx, 0x530
mov r9d, 0xc1b
mov r8d, 0xfb8
lea rdx, [rsp + 0x30]
call fcn.1400df7f0
jmp 0x1400c5af7
add rcx, 0x530
mov r8d, 0xc1b
lea rdx, [rsp + 0x30]
call fcn.1400df750
jmp 0x1400c5af7
mov rcx, qword [rbp + 0x100]
bt dword [rcx + 0x10], 0x1c
jae 0x1400c59bc
add rcx, 0x530
mov r9d, 0xc1c
mov r8d, 0xfb9
lea rdx, [rsp + 0x30]
call fcn.1400df7f0
jmp 0x1400c5af7
add rcx, 0x530
mov r8d, 0xc1c
lea rdx, [rsp + 0x30]
call fcn.1400df750
jmp 0x1400c5af7
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.140007720
call fcn.1401dc36c
movzx r9d, word [rsi + 0x53c]
mov r8d, 0xc1f
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d0d70
xor r11d, r11d
mov rdi, r13
mov rsi, qword [rsp + 0x30]
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x1400c5a3b
sbb r11d, r11d
sbb r11d, 0xffffffff
test r11d, r11d
sete al
test al, al
je 0x1400c5af7
call fcn.1401dc36c
mov r9w, 0x409
mov r8d, 0xc1f
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d0d70
jmp 0x1400c5af7
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.140007720
call fcn.1401dc36c
movzx r9d, word [rsi + 0x53c]
mov r8d, 0xc1e
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d0d70
xor r11d, r11d
mov rdi, r13
mov rsi, qword [rsp + 0x30]
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x1400c5acf
sbb r11d, r11d
sbb r11d, 0xffffffff
test r11d, r11d
sete al
test al, al
je 0x1400c5af7
call fcn.1401dc36c
mov r9w, 0x409
mov r8d, 0xc1e
mov rdx, qword [rax + 0x10]
lea rcx, [rsp + 0x30]
call fcn.1400d0d70
call fcn.1401e9268
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x1400c5e73
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rdx, [0x140260b14]
test rdx, 0xffffffffffff0000
jne 0x1400c5b50
movzx edi, dx
mov ecx, edi
call fcn.1401eb134
test rax, rax
je 0x1400c5b6d
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.1400074b0
jmp 0x1400c5b6d
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.140007720
nop
call fcn.1401e9268
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x1400c5e68
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
lea rdx, [0x140260b0c]
test rdx, 0xffffffffffff0000
jne 0x1400c5bc6
movzx edi, dx
mov ecx, edi
call fcn.1401eb134
test rax, rax
je 0x1400c5be3
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400074b0
jmp 0x1400c5be3
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.140007720
nop
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x60]
call fcn.14001bd50
nop
lea r8, [rsp + 0x48]
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.14001bd50
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 0x1400c5c4c
mov edx, esi
lea rcx, [rsp + 0x38]
call fcn.140003c90
mov rdi, qword [rsp + 0x38]
cmp rbx, r13
ja 0x1400c5c55
lea r12, [rdi + rbx*2]
mov rdx, r14
add rdx, rdx
lea rcx, [rdi + r13*2]
mov r9, rdx
mov r8, r12
call fcn.140216220
test esi, esi
js 0x1400c5e5d
cmp esi, dword [rdi - 0xc]
jg 0x1400c5e5d
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 0x1400c5cad
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 0x1400c5ccf
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 0x1400c5cf1
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 0x1400c5d12
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 0x1400c5d88
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 0x1400c5d67
movzx ecx, word [rsi + 8]
cmp word [rax + 8], cx
ja 0x1400c5d8d
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 0x1400c5d40
jmp 0x1400c5d8d
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 0x1400c5e40
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400c5e40
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400c5e40
mov ebx, dword [rsp + 0xc0]
mov esi, 1
jmp 0x1400c5e40
mov ebx, dword [rsp + 0xc0]
mov ecx, dword [rsp + 0xc8]
add ecx, 1
mov dword [rsp + 0xc8], ecx
lea r8, [0x140303b50]
jmp 0x1400c5712
mov ecx, 0x80070057
call fcn.140003c70
nop
mov ecx, 0x80004005
call fcn.140003c70
nop
mov ecx, 0x80004005
call fcn.140003c70
int3
mov rax, qword [rbp + 0x338]
mov ecx, dword [rax + 0x78]
test ecx, ecx
je 0x1400c5f22
mov ebx, r13d
test ecx, ecx
je 0x1400c5f1b
nop
nop
mov rax, qword [rbp + 0x338]
cmp r15d, dword [rax + 0x78]
jae 0x1400c5f01
mov rdx, qword [rax + 0x70]
test rdx, rdx
je 0x1400c5f01
mov eax, r15d
lea rcx, [rax + rax*8]
lea rsi, [rdx + rcx*8]
test rsi, rsi
je 0x1400c5f01
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 0x1400c5ea0
mov ebx, dword [rsp + 0xc0]
jmp 0x1400c5f22
mov ebx, dword [rsp + 0xc0]
cmp r13d, 1
jg 0x1400c5f36
xor edx, edx
lea rcx, [rbp + 0x3e8]
call fcn.1401dc77c
lea rcx, [rbp + 0x490]
mov edx, ebx
call fcn.1401dc77c
lea rcx, [rbp + 0x538]
mov edx, r14d
call fcn.1401dc77c
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 0x1400c5f76
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 0x1400c5f97
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