Function at 0x1400c8db0
Capabilities:
Check os version

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1c0]
sub rsp, 0x2c0
mov qword [rbp + 0x28], 0xfffffffffffffffe
mov qword [rsp + 0x318], rbx
mov rax, qword [0x1403c6da0]
xor rax, rsp
mov qword [rbp + 0x1b0], rax
mov edi, r9d
mov dword [rsp + 0x70], r9d
mov r13, r8
mov qword [rbp - 0x58], r8
mov r14, rdx
mov r12, rcx
mov qword [rsp + 0x68], rcx
lea rcx, [rbp - 0x18]
call fcn.1400d3820
nop
lea rdx, [rbp + 8]
mov rcx, qword [rax]
call fcn.1400d2ea0
nop
mov rbx, qword [r14]
mov rcx, qword [rax]
call fcn.1400d1470
mov rdx, rax
mov rcx, r14
call qword [rbx + 0x50]
mov qword [rbp - 0x50], rax
or esi, 0xffffffff
mov rbx, qword [rbp + 0x10]
test rbx, rbx
je 0x1400c8e5f
lock dec dword [rbx + 8]
jne 0x1400c8e5f
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx]
lock dec dword [rbx + 0xc]
jne 0x1400c8e5f
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rbx, qword [rbp - 0x10]
test rbx, rbx
je 0x1400c8e85
lock dec dword [rbx + 8]
jne 0x1400c8e85
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock dec dword [rbx + 0xc]
jne 0x1400c8e85
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov dword [rsp + 0x74], 0
lea rcx, [rbp - 8]
call fcn.1400d3820
nop
lea rdx, [rsp + 0x50]
mov rcx, qword [rax]
call fcn.1400d2ea0
nop
mov rbx, qword [rbp]
test rbx, rbx
je 0x1400c8ecb
lock dec dword [rbx + 8]
jne 0x1400c8ecb
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock dec dword [rbx + 0xc]
jne 0x1400c8ecb
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor ebx, ebx
mov r15d, ebx
mov dword [rsp + 0x60], ebx
cmp dword [r12 + 0x18], ebx
jle 0x1400c9511
lea rax, [r12 + 8]
nop word [rax + rax]
mov r8d, r15d
lea rdx, [rsp + 0x78]
mov rcx, rax
call fcn.1400c80b0
nop
mov dword [rsp + 0x20], ebx
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
mov rcx, qword [rbp - 0x80]
call fcn.14026170c
lea rdx, [rbp - 0x68]
mov rcx, rax
call fcn.1400b9fd0
nop
mov qword [rbp + 0x170], 0
mov qword [rbp + 0x178], 0
lea rax, [rsp + 0x74]
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x30], edi
lea rax, [rbp + 0x170]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r15d
mov r9, r13
mov r8, r14
lea rdx, [rbp - 0x38]
mov rcx, r12
call fcn.1400c81d0
nop
xor r8d, r8d
lea edx, [r8 + 3]
lea rcx, [rbp + 0x170]
call qword [sym.imp.USER32.dll_OffsetRect]
cmp r15d, dword [r12 + 0x28]
sete r15b
mov rcx, qword [rsp + 0x50]
test r15b, r15b
je 0x1400c8fa1
call fcn.1400d1570
jmp 0x1400c8fa6
call fcn.1400d15a0
mov ebx, dword [rbp + 0x17c]
sub ebx, dword [rbp + 0x174]
mov rcx, rax
call fcn.1400c9ee0
mov dword [rbp - 0x60], eax
mov dword [rbp - 0x5c], ebx
mov ecx, dword [rbp + 0x170]
mov dword [rbp + 0x180], ecx
lea edx, [rax + rcx]
mov dword [rbp + 0x188], edx
mov rcx, qword [rbp + 0x170]
shr rcx, 0x20
mov dword [rbp + 0x184], ecx
mov rax, qword [rbp - 0x60]
shr rax, 0x20
add eax, ecx
mov dword [rbp + 0x18c], eax
movaps xmm0, xmmword [rbp + 0x170]
movdqa xmmword [rbp + 0x160], xmm0
mov dword [rbp + 0x160], edx
mov rcx, qword [rsp + 0x50]
test r15b, r15b
je 0x1400c901c
call fcn.1400d1590
jmp 0x1400c9021
call fcn.1400d15c0
mov rcx, rax
call fcn.1400c9ee0
mov ecx, dword [rbp + 0x168]
sub ecx, eax
mov dword [rbp + 0x168], ecx
movaps xmm0, xmmword [rbp + 0x170]
movdqa xmmword [rbp + 0x190], xmm0
mov dword [rbp + 0x190], ecx
mov rcx, qword [rsp + 0x50]
call fcn.1400d1440
test eax, eax
je 0x1400c91ad
cmp byte [0x1403e3e01], 0
jne 0x1400c90b1
xor edx, edx
mov r8d, pe_nt_image_headers64
lea rcx, [rbp + 0x44]
call fcn.14025e980
mov dword [rbp + 0x40], 0x11c
lea rcx, [rbp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [rbp + 0x50], 2
jne 0x1400c90a0
mov rax, qword [rbp + 0x40]
shr rax, 0x20
cmp eax, 6
jb 0x1400c90a0
mov al, 1
jmp 0x1400c90a2
xor al, al
mov byte [0x1403e3e00], al
mov byte [0x1403e3e01], 1
jmp 0x1400c90b8
movzx eax, byte [0x1403e3e00]
test al, al
jne 0x1400c91ad
mov eax, dword [rbp + 0x170]
mov dword [rbp + 0x160], eax
mov eax, dword [rbp + 0x198]
mov dword [rbp + 0x168], eax
mov r9d, 3
lea r8d, [r9 + 3]
lea rdx, [rbp + 0x160]
mov rcx, qword [r14 + 8]
test r15b, r15b
je 0x1400c914f
inc dword [rbp + 0x16c]
call qword [sym.imp.USER32.dll_DrawEdge]
mov r9d, 4
lea r8d, [r9 + 1]
lea rdx, [rbp + 0x160]
mov rcx, qword [r14 + 8]
call qword [sym.imp.USER32.dll_DrawEdge]
add dword [rbp + 0x160], 2
add dword [rbp + 0x164], 2
sub dword [rbp + 0x168], 2
mov rcx, qword [rsp + 0x50]
call fcn.1400d1450
mov r8d, eax
lea rdx, [rbp + 0x160]
mov rcx, r14
call fcn.14013ab14
jmp 0x1400c925b
inc dword [rbp + 0x164]
call qword [sym.imp.USER32.dll_DrawEdge]
mov r9d, 4
lea r8d, [r9 + 1]
lea rdx, [rbp + 0x160]
mov rcx, qword [r14 + 8]
call qword [sym.imp.USER32.dll_DrawEdge]
add dword [rbp + 0x160], 2
add dword [rbp + 0x164], 2
sub dword [rbp + 0x168], 2
mov ecx, reloc.WSOCK32.dll_sendto
call qword [sym.imp.USER32.dll_GetSysColor]
mov r8d, eax
lea rdx, [rbp + 0x160]
mov rcx, r14
call fcn.14013ab14
jmp 0x1400c925b
mov rcx, qword [rsp + 0x50]
call fcn.1400d1570
mov r12, rax
mov rcx, qword [rsp + 0x50]
call fcn.1400d15a0
mov rbx, rax
mov rcx, qword [rsp + 0x50]
call fcn.1400d1590
mov r13, rax
mov rcx, qword [rsp + 0x50]
call fcn.1400d15c0
mov rdi, rax
call fcn.14009c4d0
test al, al
je 0x1400c91fc
mov rcx, r12
mov r12, r13
mov r13, rcx
mov rcx, rbx
mov rbx, rdi
mov rdi, rcx
test r15b, r15b
cmovne rbx, r12
lea r8, [rbp + 0x180]
mov rdx, r14
mov rcx, rbx
call fcn.1400ca030
mov rcx, qword [rsp + 0x50]
test r15b, r15b
je 0x1400c9226
call fcn.1400d1580
jmp 0x1400c922b
call fcn.1400d15b0
lea r8, [rbp + 0x160]
mov rdx, r14
mov rcx, rax
call fcn.1400ca030
test r15b, r15b
cmovne rdi, r13
lea r8, [rbp + 0x190]
mov rdx, r14
mov rcx, rdi
call fcn.1400ca030
mov r12, qword [rsp + 0x68]
add dword [rbp + 0x170], 0xa
sub dword [rbp + 0x178], 0xa
lea rcx, [rbp + 0x30]
call fcn.1400d3820
nop
lea rdx, [rbp + 0x18]
mov rcx, qword [rax]
call fcn.1400d2ea0
nop
mov rbx, qword [r14]
mov rcx, qword [rax]
call fcn.1400d1470
mov rdx, rax
mov rcx, r14
call qword [rbx + 0x50]
mov r13, rax
mov rbx, qword [rbp + 0x20]
test rbx, rbx
je 0x1400c92be
lock dec dword [rbx + 8]
jne 0x1400c92be
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx]
lock dec dword [rbx + 0xc]
jne 0x1400c92be
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rbx, qword [rbp + 0x38]
test rbx, rbx
je 0x1400c92e4
lock dec dword [rbx + 8]
jne 0x1400c92e4
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock dec dword [rbx + 0xc]
jne 0x1400c92e4
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor r15d, r15d
mov dword [rsp + 0x20], r15d
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
mov rcx, qword [rbp - 0x80]
call fcn.14026170c
mov rdi, qword [rax + 0x100]
mov eax, dword [rbp + 0x17c]
mov ecx, dword [rbp + 0x174]
sub eax, ecx
sub eax, 0x10
cdq
sub eax, edx
sar eax, 1
lea ebx, [rcx + rax]
mov rcx, r14
call fcn.14000eaf0
mov rcx, rax
mov dword [rsp + 0x40], 3
mov qword [rsp + 0x38], r15
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x28], reloc.WSOCK32.dll_recv
mov dword [rsp + 0x20], reloc.WSOCK32.dll_recv
mov r9, rdi
mov r8d, ebx
mov edx, dword [rbp + 0x170]
call qword [sym.imp.USER32.dll_DrawIconEx]
xor r8d, r8d
lea edx, [r15 + 0x10]
lea rcx, [rbp + 0x170]
call qword [sym.imp.USER32.dll_OffsetRect]
mov r15d, dword [rsp + 0x60]
mov rcx, qword [rsp + 0x50]
cmp r15d, dword [r12 + 0x28]
jne 0x1400c9390
call fcn.1400d14b0
jmp 0x1400c9395
call fcn.1400d14d0
mov r12d, eax
mov rax, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x50]
cmp r15d, dword [rax + 0x28]
jne 0x1400c93af
call fcn.1400d14a0
jmp 0x1400c93b4
call fcn.1400d14c0
mov edi, eax
lea rdx, [rbp + 0x170]
lea rcx, [rbp + 0x1a0]
call qword [sym.imp.USER32.dll_CopyRect]
xor ebx, ebx
mov rax, qword [rsp + 0x68]
cmp r15d, dword [rax + 0x28]
sete bl
mov rcx, r14
call fcn.14000eaf0
mov rcx, rax
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x30], ebx
mov dword [rsp + 0x28], r12d
mov dword [rsp + 0x20], edi
mov r9d, 0x40024
lea r8, [rbp + 0x1a0]
lea rdx, [rbp - 0x68]
call fcn.1400bf3f0
mov r11, qword [r14]
mov rdx, r13
mov rcx, r14
call qword [r11 + 0x50]
nop
mov rcx, qword [rbp - 0x38]
test rcx, rcx
je 0x1400c942b
call fcn.14011bc00
xor edi, edi
mov qword [rbp - 0x38], rdi
mov qword [rbp - 0x30], rdi
mov qword [rbp - 0x28], rdi
mov rdx, qword [rbp - 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400c9458
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rax, [0x1402d0430]
mov qword [rsp + 0x78], rax
cmp dword [rbp - 0x70], 0
je 0x1400c9487
mov rcx, qword [rbp - 0x80]
test rcx, rcx
je 0x1400c9487
mov rdx, qword [rbp - 0x78]
test rdx, rdx
je 0x1400c9482
cmp dword [rdx + 8], 1
jg 0x1400c948b
call fcn.1401237b8
mov rdx, qword [rbp - 0x78]
mov qword [rbp - 0x40], rdx
mov rbx, rdi
mov qword [rbp - 0x78], rbx
mov qword [rbp - 0x80], rdi
test rdx, rdx
je 0x1400c94c5
lock dec dword [rdx + 8]
jne 0x1400c94c1
mov rbx, qword [rbp - 0x40]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock dec dword [rbx + 0xc]
jne 0x1400c94c1
mov rcx, qword [rbp - 0x40]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp - 0x78]
test rbx, rbx
je 0x1400c94e7
lock dec dword [rbx + 8]
jne 0x1400c94e7
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock dec dword [rbx + 0xc]
jne 0x1400c94e7
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
inc r15d
mov dword [rsp + 0x60], r15d
mov r12, qword [rsp + 0x68]
cmp r15d, dword [r12 + 0x18]
lea rax, [r12 + 8]
mov edi, dword [rsp + 0x70]
mov r13, qword [rbp - 0x58]
mov ebx, 0
jl 0x1400c8ef0
mov rax, qword [r14]
mov rdx, qword [rbp - 0x50]
mov rcx, r14
call qword [rax + 0x50]
nop
mov rbx, qword [rsp + 0x58]
test rbx, rbx
je 0x1400c9546
lock dec dword [rbx + 8]
jne 0x1400c9546
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock dec dword [rbx + 0xc]
jne 0x1400c9546
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x1b0]
xor rcx, rsp
call fcn.14025db20
mov rbx, qword [rsp + 0x318]
add rsp, 0x2c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret