Function at 0x140129810
Capabilities:
Check os version

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x78], rbx
mov r13d, r8d
mov rsi, rdx
mov rbx, rcx
lea rax, vtable.k.2.0
mov qword [rcx], rax
mov edx, 0xa
add rcx, 0x30
call fcn.14014f11c
lea r11, method..13.virtual_0
mov qword [rbx + 0x30], r11
call fcn.14013d07c
mov rdx, rax
xor r15d, r15d
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140129881
mov ecx, 0x80004005
call fcn.140001c00
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbx + 0x68], rax
or rbp, 0xffffffffffffffff
mov dword [rbx + 0x74], ebp
mov dword [rbx + 0x78], r15d
mov qword [rbx + 8], r15
mov qword [rbx + 0x10], r15
mov dword [rbx + 0x18], r15d
mov dword [rbx + 0x1c], r15d
mov dword [rbx + 0x24], 0x1e
mov dword [rbx + 0x28], r15d
mov dword [rbx + 0x20], r15d
mov dword [rbx + 0x2c], r15d
xor eax, eax
mov rcx, rbp
lea rdi, [0x14019cf88]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x14019cf88]
lea rcx, [rbx + 0x68]
call fcn.140002390
mov dword [rbx + 0x70], ebp
lea rax, method.j.1.virtual_0
mov qword [rbx], rax
call fcn.14013d07c
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140129913
mov ecx, 0x80004005
call fcn.140001c00
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbx + 0x88], rax
lea r14, [0x1401a0768]
mov qword [rbx + 0x90], r14
mov qword [rbx + 0x98], r15
mov qword [rbx + 0xa0], r15
mov dword [rbx + 0xa8], r15d
mov dword [rbx + 0xac], r15d
mov dword [rbx + 0xb0], r15d
mov dword [rbx + 0xb4], r15d
mov byte [rbx + 0xb8], 0
mov byte [rbx + 0xb9], 0
mov dword [rbx + 0xbc], ebp
mov qword [rbx + 0xc0], r15
mov dword [rbx + 0xc8], r15d
mov qword [rbx + 0xd0], r15
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [0x14022e2f8], 1
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea rdi, [0x1401a0758]
mov qword [rbx + 0x90], rdi
mov qword [rbx + 0xd8], r15
mov qword [rbx + 0xe0], r14
mov qword [rbx + 0xe8], r15
mov qword [rbx + 0xf0], r15
mov dword [rbx + 0xf8], r15d
mov dword [rbx + 0xfc], r15d
mov dword [rbx + 0x100], r15d
mov dword [rbx + 0x104], r15d
mov byte [rbx + 0x108], 0
mov byte [rbx + 0x109], 0
mov dword [rbx + 0x10c], ebp
mov qword [rbx + 0x110], r15
mov dword [rbx + 0x118], r15d
mov qword [rbx + 0x120], r15
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [0x14022e2f8], 1
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbx + 0xe0], rdi
mov qword [rbx + 0x128], r15
mov qword [rbx + 0x130], r14
mov qword [rbx + 0x138], r15
mov qword [rbx + 0x140], r15
mov dword [rbx + 0x148], r15d
mov dword [rbx + 0x14c], r15d
mov dword [rbx + 0x150], r15d
mov dword [rbx + 0x154], r15d
mov byte [rbx + 0x158], 0
mov byte [rbx + 0x159], 0
mov dword [rbx + 0x15c], ebp
mov qword [rbx + 0x160], r15
mov dword [rbx + 0x168], r15d
mov qword [rbx + 0x170], r15
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [0x14022e2f8], 1
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbx + 0x130], rdi
mov qword [rbx + 0x178], r15
mov qword [rbx + 0x180], r14
mov qword [rbx + 0x188], r15
mov qword [rbx + 0x190], r15
mov dword [rbx + 0x198], r15d
mov dword [rbx + 0x19c], r15d
mov dword [rbx + 0x1a0], r15d
mov dword [rbx + 0x1a4], r15d
mov byte [rbx + 0x1a8], 0
mov byte [rbx + 0x1a9], 0
mov dword [rbx + 0x1ac], ebp
mov qword [rbx + 0x1b0], r15
mov dword [rbx + 0x1b8], r15d
mov qword [rbx + 0x1c0], r15
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [0x14022e2f8], 1
lea rcx, [0x14022e2d0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rbx + 0x180], rdi
mov qword [rbx + 0x1c8], r15
mov qword [rbx + 0x10], rsi
mov dword [rbx + 0x18], r13d
xor eax, eax
mov rcx, rbp
lea rdi, [0x14019cf88]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x14019cf88]
lea rcx, [rbx + 0x88]
call fcn.140002390
xor eax, eax
mov dword [rbx + 0x80], eax
mov rcx, qword [rbx + 0x10]
test rcx, rcx
je 0x140129f40
add rcx, 0x278
lea rdx, [rsp + 0x88]
call fcn.1401199c0
bt dword [rsi + 0xe0], 0xc
jae 0x140129c5e
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 [0x14022e714]
test eax, eax
jne 0x140129c3a
mov dword [0x14022e710], 0x114
lea rcx, [0x14022e710]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x14022e714]
cmp eax, 6
jne 0x140129c5e
cmp dword [0x14022e718], 1
jne 0x140129c5e
cmp word [rsi + 0x448], 0x2a34
jb 0x140129c5e
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x400000
test byte [rsi + 0x10c], 0x20
je 0x140129c6e
or dword [rbx + 0x80], 0x40
cmp word [rsi + 0x44e], 0x103c
jne 0x140129c8d
cmp dword [rsi + 0x1d38], 1
jne 0x140129c8d
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 0x2000
mov ecx, dword [rbx + 0x18]
cmp ecx, 0x56
jg 0x140129ce1
cmp ecx, 0x56
je case.0x140129cc2.18
sub ecx, 6
cmp ecx, 0x3c
ja case.0x140129cc2.9
movsxd rax, ecx
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x129f6c]
mov ecx, dword [rdx + rax*4 + 0x129f58]
add rcx, rdx
jmp rcx
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x4000
jmp case.0x140129cc2.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x20
jmp case.0x140129cc2.9
sub ecx, 0x5e
je case.0x140129cc2.6
sub ecx, 0x7d
je case.0x140129cc2.8
sub ecx, 0xd5
je case.0x140129cc2.8
sub ecx, 0x9a92
je 0x140129d10
cmp ecx, 6
jne case.0x140129cc2.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x2000
jmp case.0x140129cc2.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x100000
jmp case.0x140129cc2.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 0x140129d4f
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x2000
or dword [rbx + 0x80], 4
jmp case.0x140129cc2.9
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x20
or dword [rbx + 0x80], 1
cmp dword [rbx + 0x18], 0xdb
jne 0x140129d77
or dword [rbx + 0x80], 2
movzx ecx, word [rsi + 0x44a]
shl ecx, 0x10
movzx eax, word [rsi + 0x448]
or ecx, eax
cmp ecx, 0x103c2a95
ja 0x140129e34
cmp ecx, 0x103c2a95
je 0x140129e8e
cmp ecx, 0x103c280c
ja 0x140129dfd
cmp ecx, 0x103c280c
je 0x140129efe
cmp ecx, 0x103c12ff
je 0x140129efe
cmp ecx, 0x103c1305
jbe 0x140129f06
cmp ecx, 0x103c1308
jbe 0x140129efe
cmp ecx, 0x103c2001
jne 0x140129f06
or dword [rbx + 0x80], 0x10
mov rax, qword [rbx + 0x10]
or dword [rax + 0x30], 0x4000000
jmp 0x140129f06
sub ecx, 0x103c2a43
je 0x140129e24
sub ecx, 0x13
je 0x140129e18
cmp ecx, 0x38
je 0x140129eb0
jmp 0x140129f06
or dword [rbx + 0x80], 8
jmp 0x140129f06
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 0x4000
jmp 0x140129f06
cmp ecx, 0x103c2aa1
ja 0x140129ed2
cmp ecx, 0x103c2aa1
je 0x140129eb0
sub ecx, 0x103c2a9a
je 0x140129e8e
sub ecx, 2
je 0x140129e79
cmp ecx, 4
jne 0x140129f06
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x800000
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x8000000
jmp 0x140129f06
mov rax, qword [rbx + 0x10]
and dword [rax + 0x2c], 0xffffdfff
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 4
jmp 0x140129f06
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 0x140129f06
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 0x140129f06
cmp ecx, 0x103c3010
jb 0x140129f06
cmp ecx, 0x103c3016
jbe 0x140129efe
cmp ecx, 0x103c3045
je 0x140129ef4
cmp ecx, 0x103c30ba
je 0x140129efe
jmp 0x140129f06
mov rax, qword [rbx + 0x10]
or dword [rax + 0x34], 0x20
jmp 0x140129f06
mov rax, qword [rbx + 0x10]
or dword [rax + 0x2c], 8
bt dword [rsi + 0x1ac], 8
jae 0x140129f1e
mov rax, qword [rbx + 0x10]
or dword [rax + 0x548], 0x100
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140129f40
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rax, rbx
mov rbx, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret