Function at 0x140105550
Capabilities:
Check if file exists
Check os version
Get file attributes

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
call fcn.14012a060
mov rdx, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x140105583
mov ecx, 0x80004005
call fcn.140002cb0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x60], rax
lea rdx, str.ToastDLL64.dll
or rbp, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x1401055ca
movzx edi, dx
mov ecx, edi
call fcn.140138f84
test rax, rax
je 0x1401055e7
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.140004c30
jmp 0x1401055e7
xor eax, eax
mov rcx, rbp
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x60]
call fcn.140003210
nop
lea rcx, [rsp + 0x70]
call fcn.140073fa0
nop
lea r8, [rsp + 0x60]
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.1400635b0
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140105625
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, dword [0x140206d04]
test eax, eax
jne 0x14010564c
mov dword [0x140206d00], 0x114
lea rcx, [0x140206d00]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x140206d04]
cmp eax, 6
jne 0x14010565f
cmp dword [0x140206d08], 2
jae 0x140105668
jmp 0x140105765
cmp eax, 6
jbe 0x140105765
mov rdi, qword [rsp + 0x68]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x140105691
cmp rax, qword [rdi - 0x18]
jne 0x140105691
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x1401056cf
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x1401056ad
call fcn.1400b7870
int3
mov eax, dword [rdi - 0x10]
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rdi
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.140144ee0
add rbx, 0x18
mov qword [rsp + 0x78], rbx
xor eax, eax
lea rdi, [0x14017f438]
mov rsi, rbx
mov r12d, 1
mov rcx, r12
repe cmpsw word [rsi], word [rdi]
je 0x1401056f7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
jne 0x14010571d
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140105765
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x140105765
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140105748
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140105765
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x140105765
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140105768
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x140105768
xor r12d, r12d
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140105789
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x1401057a7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r12d
add rsp, 0x30
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret