Function at 0x140045a80
Capabilities:
Check os version

Disassembly:
mov qword [rsp + 8], rcx
push rsi
push rdi
push r14
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x58], rbx
mov esi, r8d
mov rdi, rdx
mov rbx, rcx
call fcn.1400482f0
nop
lea rax, vtable.CCustomHP.0
mov qword [rbx], rax
call fcn.1400f9930
mov rcx, rax
test rax, rax
je 0x140045ee9
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbx + 0x88], rax
lea rcx, [rbx + 0x90]
call fcn.140081e70
nop
lea rcx, [rbx + 0xe8]
call fcn.140081e70
nop
lea rcx, [rbx + 0x140]
call fcn.140081e70
nop
lea rcx, [rbx + 0x198]
call fcn.140081e70
nop
mov qword [rbx + 0x10], rdi
mov dword [rbx + 0x18], esi
lea rdx, [0x140345b70]
or rsi, 0xffffffffffffffff
mov rax, rsi
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x140045b20
mov r8d, eax
lea rcx, [rbx + 0x88]
call fcn.1400105e0
xor eax, eax
mov dword [rbx + 0x80], eax
mov rcx, qword [rbx + 0x10]
test rcx, rcx
jne 0x140045b65
lea r8, str.CustomHP.cpp
lea edx, [rax + 0x29]
lea rcx, str._VCpl__RETURN_ON_FALSE:_Line___d__File___s_n
call fcn.140055180
jmp 0x140045ed8
add rcx, 0x278
lea rdx, [rsp + 0x68]
call fcn.1400e5cb0
test dword [rdi + 0xe0], 0x1000
je 0x140045c26
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x10000
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x4000
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 0x10000
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x800000
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 8
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 0x800
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 8
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x80000000
mov eax, dword [0x1403ff444]
test eax, eax
jne 0x140045bff
mov dword [0x1403ff440], 0x114
lea rcx, [0x1403ff440]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x1403ff444]
cmp eax, 6
jne 0x140045c26
cmp dword [0x1403ff448], 1
jne 0x140045c26
mov eax, 0x2a34
cmp word [rdi + 0x448], ax
jb 0x140045c26
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x400000
test byte [rdi + 0x10c], 0x20
je 0x140045c36
or dword [rbx + 0x80], 0x40
mov eax, 0x103c
cmp ax, word [rdi + 0x44e]
jne 0x140045c58
cmp dword [rdi + 0x1d38], 1
jne 0x140045c58
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 0x2000
mov ecx, dword [rbx + 0x18]
cmp ecx, 0x56
jg 0x140045ca9
je case.0x140045c8a.18
sub ecx, 6
cmp ecx, 0x3c
ja case.0x140045c8a.9
movsxd rax, ecx
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x45f08]
mov ecx, dword [rdx + rax*4 + 0x45ef4]
add rcx, rdx
jmp rcx
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x4000
jmp case.0x140045c8a.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x20
jmp case.0x140045c8a.9
sub ecx, 0x5e
je case.0x140045c8a.6
sub ecx, 0x7d
je case.0x140045c8a.8
sub ecx, 0xd5
je case.0x140045c8a.8
sub ecx, 0x9a92
je 0x140045cd8
cmp ecx, 6
jne case.0x140045c8a.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x2000
jmp case.0x140045c8a.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x100000
jmp case.0x140045c8a.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 4
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x80
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x800
cmp dword [rbx + 0x18], 0x18
je 0x140045d17
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x2000
or dword [rbx + 0x80], 4
jmp case.0x140045c8a.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x20
or dword [rbx + 0x80], 1
cmp dword [rbx + 0x18], 0xdb
jne 0x140045d3f
or dword [rbx + 0x80], 2
movzx ecx, word [rdi + 0x44a]
shl ecx, 0x10
movzx eax, word [rdi + 0x448]
or ecx, eax
cmp ecx, 0x103c2a9a
ja 0x140045df5
je 0x140045e1b
cmp ecx, 0x103c2a43
ja 0x140045dd2
je 0x140045dc2
cmp ecx, 0x103c12ff
je 0x140045d9e
cmp ecx, 0x103c1305
jbe 0x140045ea1
cmp ecx, 0x103c1308
jbe 0x140045d9e
cmp ecx, 0x103c2001
je 0x140045dab
cmp ecx, 0x103c280c
jne 0x140045ea1
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 8
jmp 0x140045ea1
or dword [rbx + 0x80], 0x10
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 0x4000000
jmp 0x140045ea1
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x4000
jmp 0x140045ea1
sub ecx, 0x103c2a56
je 0x140045de9
sub ecx, 0x38
je 0x140045e1b
cmp ecx, 7
je 0x140045e1b
jmp 0x140045ea1
or dword [rbx + 0x80], 8
jmp 0x140045ea1
cmp ecx, 0x103c3016
ja 0x140045e6a
cmp ecx, 0x103c3010
jae 0x140045d9e
sub ecx, 0x103c2a9c
je 0x140045e55
sub ecx, 4
je 0x140045e3d
cmp ecx, 1
jne 0x140045ea1
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x800000
or dword [rbx + 0x80], 0x80
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x8000000
jmp 0x140045ea1
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x800000
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x8000000
jmp 0x140045ea1
mov rax, qword [rbx + 0x10]
and dword [rax + 0x2c], 0xffffdfff
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 4
jmp 0x140045ea1
cmp ecx, 0x103c3045
je 0x140045e99
cmp ecx, 0x103c30ba
je 0x140045d9e
lea eax, [rcx - 0x103c84ee]
cmp eax, 2
ja 0x140045ea1
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x4000000
jmp 0x140045ea1
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x20
test dword [rdi + 0x1ac], 0x100
je 0x140045ebb
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x100
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x140045ed8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rax, rbx
mov rbx, qword [rsp + 0x58]
add rsp, 0x30
pop r14
pop rdi
pop rsi
ret
mov ecx, 0x80004005
call fcn.14000de90
int3