Function at 0x1400acea0
Capabilities:
Check os version
Link many functions at runtime

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push rsi
push rdi
push r12
sub rsp, 0x70
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbp
mov rsi, rcx
call fcn.1400a73b0
nop
lea rax, vtable.CExtPaintManager::CExtPaintManagerAutoPtr.0
mov qword [rsi], rax
xor ebx, ebx
mov qword [rsi + 0x38], rbx
lea edx, [rbx + 0xa]
lea rcx, [rsi + 0x40]
call fcn.14001bc2c
lea r11, vtable.CTypedPtrList_class_CPtrList__class_CExtPmBridge____ptr64_.0
mov qword [rsi + 0x40], r11
and byte [rsi + 0x78], 0xfe
mov dword [rsi + 0x7c], ebx
lea rdx, [0x1401f31d0]
lea rcx, [rsi + 0x80]
call fcn.1400062b0
nop
mov byte [rsi + 0x19c], bl
mov byte [rsi + 0x19d], bl
mov dword [rsi + 0x1a0], 0x60
mov dword [rsi + 0x1a4], 0x60
mov dword [rsi + 0x1a8], 0x60
or byte [rsi + 0x1ac], 0xf
mov dword [rsi + 0x1b0], ebx
lea rcx, str.CExtPaintManager::CExtPaintManagerAutoPtr::m_nMsgPaintManagerChanged
call qword [sym.imp.USER32.dll_RegisterWindowMessageW]
mov dword [rsi + 0x1b4], eax
and byte [rsi + 0x1b8], 0xfe
lea rcx, [rsi + 0x1d8]
call fcn.1400c0bf0
nop
lea rcx, [rsi + 0x598]
call fcn.1400c1800
nop
mov dword [rsi + 0x640], ebx
or byte [rsi + 0x644], 1
mov qword [rsi + 0x648], rbx
mov qword [rsi + 0x650], rbx
mov qword [rsi + 0x658], rbx
mov qword [rsi + 0x668], rbx
mov qword [rsi + 0x678], rbx
mov qword [rsi + 0x680], rbx
mov qword [rsi + 0x688], rbx
mov qword [rsi + 0x690], rbx
mov qword [rsi + 0x698], rbx
mov qword [rsi + 0x6a0], rbx
mov qword [rsi + 0x6a8], rbx
and byte [rsi + 0x6b0], 0xfe
xor edx, edx
mov r8d, 0x114
lea rcx, [rsi + 0x88]
call fcn.14002fb80
mov dword [rsi + 0x88], 0x114
call fcn.140008c24
mov rcx, rax
test rax, rax
setne bl
test ebx, ebx
jne 0x1400ad012
mov ecx, 0x80004005
call fcn.1400052e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x98], rax
lea rdx, [0x1401dd700]
or rbx, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x1400ad05c
movzx edi, dx
mov ecx, edi
call fcn.14001b4a8
test rax, rax
je 0x1400ad07c
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x98]
call fcn.1400060a0
jmp 0x1400ad07c
xor eax, eax
mov rcx, rbx
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x98]
call fcn.140005080
nop
lea rcx, [rsi + 0x88]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov edx, dword [rsi + 0x98]
test edx, edx
je 0x1400ad3c4
sub edx, 1
je 0x1400ad28c
cmp edx, 1
jne 0x1400ad3f5
or byte [rsi + 0x19c], 0x20
movzx eax, byte [rsi + 0x19c]
mov ecx, dword [rsi + 0x8c]
cmp ecx, 6
jne 0x1400ad137
cmp dword [rsi + 0x90], 0
jne 0x1400ad101
or byte [rsi + 0x19d], 0x10
xor eax, eax
mov rcx, rbx
lea rdi, [0x1401f3120]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x1401f3120]
lea rcx, [rsp + 0x98]
call fcn.140005080
jmp 0x1400ad21b
or byte [rsi + 0x19d], 0x40
xor eax, eax
mov rcx, rbx
lea rdi, [0x1401f3108]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x1401f3108]
lea rcx, [rsp + 0x98]
call fcn.140005080
jmp 0x1400ad21b
cmp ecx, 5
jne 0x1400ad1b8
mov ecx, dword [rsi + 0x90]
test ecx, ecx
jne 0x1400ad17d
or al, 0x80
mov byte [rsi + 0x19c], al
xor eax, eax
mov rcx, rbx
lea rdi, [0x1401f30e8]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x1401f30e8]
lea rcx, [rsp + 0x98]
call fcn.140005080
jmp 0x1400ad21b
cmp ecx, 1
jne 0x1400ad21b
or byte [rsi + 0x19d], cl
xor eax, eax
mov rcx, rbx
lea rdi, [0x1401f30d0]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x1401f30d0]
lea rcx, [rsp + 0x98]
call fcn.140005080
jmp 0x1400ad21b
cmp ecx, 4
jne 0x1400ad1f1
or al, 0x40
mov byte [rsi + 0x19c], al
xor eax, eax
mov rcx, rbx
lea rdi, str.Windows_NT
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.Windows_NT
lea rcx, [rsp + 0x98]
call fcn.140005080
jmp 0x1400ad21b
xor eax, eax
mov rcx, rbx
lea rdi, str.Windows_NT
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.Windows_NT
lea rcx, [rsp + 0x98]
call fcn.140005080
mov eax, dword [rsi + 0x8c]
cmp eax, 4
jb 0x1400ad22d
or byte [rsi + 0x19d], 2
cmp eax, 5
jb 0x1400ad3f5
or byte [rsi + 0x19d], 4
movzx ecx, byte [rsi + 0x19d]
cmp eax, 5
jne 0x1400ad252
cmp dword [rsi + 0x90], 0
je 0x1400ad25b
or cl, 8
mov byte [rsi + 0x19d], cl
cmp eax, 6
jb 0x1400ad3f5
or byte [rsi + 0x19d], 0x20
movzx eax, byte [rsi + 0x19d]
cmp dword [rsi + 0x90], 1
jb 0x1400ad3f5
or al, 0x80
mov byte [rsi + 0x19d], al
jmp 0x1400ad3f5
or byte [rsi + 0x19c], 2
movzx edx, byte [rsi + 0x19c]
mov ecx, dword [rsi + 0x8c]
cmp ecx, 4
jne 0x1400ad2b2
cmp dword [rsi + 0x90], 0
jne 0x1400ad2b2
mov al, 1
jmp 0x1400ad2b4
xor eax, eax
shl al, 2
xor al, dl
and al, 4
xor al, dl
mov byte [rsi + 0x19c], al
cmp ecx, 4
ja 0x1400ad2da
cmp ecx, 4
jne 0x1400ad2d6
cmp dword [rsi + 0x90], 0
ja 0x1400ad2da
xor ecx, ecx
jmp 0x1400ad2dc
mov cl, 1
shl cl, 4
xor cl, al
and cl, 0x10
xor cl, al
mov byte [rsi + 0x19c], cl
xor eax, eax
mov rcx, rbx
lea rdi, str.Windows
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.Windows
lea rcx, [rsp + 0x98]
call fcn.140005080
movzx edx, byte [rsi + 0x19c]
test dl, 0x10
je 0x1400ad398
cmp dword [rsi + 0x8c], 4
jne 0x1400ad36c
cmp dword [rsi + 0x90], 0
jbe 0x1400ad36c
or dl, 8
mov byte [rsi + 0x19c], dl
xor eax, eax
mov rcx, rbx
lea rdi, [0x1401f3098]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x1401f3098]
lea rcx, [rsp + 0x98]
call fcn.140004560
jmp 0x1400ad3f5
xor eax, eax
mov rcx, rbx
lea rdi, str.98_or_later
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.98_or_later
lea rcx, [rsp + 0x98]
call fcn.140004560
jmp 0x1400ad3f5
xor eax, eax
mov rcx, rbx
lea rdi, [0x1401f3078]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x1401f3078]
lea rcx, [rsp + 0x98]
call fcn.140004560
jmp 0x1400ad3f5
or byte [rsi + 0x19c], 1
xor eax, eax
mov rcx, rbx
lea rdi, str.Win32s
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.Win32s
lea rcx, [rsp + 0x98]
call fcn.140005080
test byte [rsi + 0x19d], 4
jne 0x1400ad405
and byte [rsi + 0x1ac], 0xf7
lea rax, [rsi + 0x9c]
mov qword [rsp + 0x30], rax
mov eax, dword [rsi + 0x94]
mov dword [rsp + 0x28], eax
mov eax, dword [rsi + 0x90]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsi + 0x8c]
mov r8, qword [rsp + 0x98]
lea rdx, str._s_v._lu._lu__build__lu___s
lea rcx, [rsi + 0x80]
call fcn.140005d30
mov rcx, rsi
call fcn.1400a77e0
test byte [rsi + 0x19d], 4
je 0x1400ad4fc
lea rcx, str.msimg32.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsi + 0x648], rax
test rax, rax
je 0x1400ad4fc
lea rdx, str.GradientFill
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x650], rax
lea rdx, str.AlphaBlend
mov rcx, qword [rsi + 0x648]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x658], rax
lea rdx, str.AlphaDIBBlend
mov rcx, qword [rsi + 0x648]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x660], rax
lea rdx, str.TransparentBlt
mov rcx, qword [rsi + 0x648]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x668], rax
lea rdx, str.TransparentDIBits
mov rcx, qword [rsi + 0x648]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x670], rax
lea rcx, [0x1401df928]
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsi + 0x678], rax
test rax, rax
je 0x1400ad59c
lea rdx, str.AnimateWindow
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x680], rax
lea rdx, [0x1401f2f90]
mov rcx, qword [rsi + 0x678]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x688], rax
lea rdx, str.UpdateLayeredWindow
mov rcx, qword [rsi + 0x678]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x690], rax
lea rdx, str.PrintWindow
mov rcx, qword [rsi + 0x678]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x698], rax
lea rdx, str.SetProcessDPIAware
mov rcx, qword [rsi + 0x678]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x1400ad59c
call rax
lea rcx, str.SHLWAPI.DLL
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsi + 0x6a0], rax
test rax, rax
je 0x1400ad5cc
lea rdx, str.SHAutoComplete
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsi + 0x6a8], rax
xor edx, edx
lea rcx, [rsp + 0x48]
call fcn.14000c7d8
nop
mov edx, 0x58
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov dword [rsi + 0x1a0], eax
mov edx, 0x5a
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov edx, eax
mov dword [rsi + 0x1a4], eax
mov eax, dword [rsi + 0x1a0]
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov dword [rsi + 0x1a8], eax
test byte [rsi + 0x19d], 4
je 0x1400ad63e
call fcn.1400a4450
cmp eax, 0xf
jl 0x1400ad63e
cmp qword [rsi + 0x690], 0
je 0x1400ad63e
or byte [rsi + 0x6b0], 1
lea rcx, [rsp + 0x48]
call fcn.14000c83c
nop
mov rdx, qword [rsp + 0x98]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x1400ad66a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rax, rsi
lea r11, [rsp + 0x70]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsp, r11
pop r12
pop rdi
pop rsi
ret