Function at 0x140057330
Capabilities:
Check if file exists
Create process on windows
Get file attributes

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0xa0
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov r13, rcx
call fcn.140129a50
mov rcx, rax
xor edx, edx
test rax, rax
setne dl
test edx, edx
jne 0x14005736d
mov ecx, 0x80004005
call fcn.140002d80
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0xe8], rdi
lea r14, [0x14017f438]
or rbp, 0xffffffffffffffff
test r14, 0xffffffffffff0000
jne 0x1400573c0
movzx esi, r14w
mov ecx, esi
call fcn.140138984
test rax, rax
je 0x1400573ea
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0xe8]
call fcn.140004d70
mov rdi, qword [rsp + 0xe8]
jmp 0x1400573ea
xor eax, eax
mov rcx, rbp
mov rdi, r14
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r14
lea rcx, [rsp + 0xe8]
call fcn.1400032e0
mov rdi, qword [rsp + 0xe8]
cmp qword [r13 + 0x98], 0
jne 0x140057416
lea rdx, [rdi - 0x18]
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x14005765e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14005765e
mov rax, qword [r13 + 0x98]
mov rcx, qword [rax + 0x520]
mov rax, qword [rcx]
lea rdx, [rsp + 0xf0]
call qword [rax + pe_nt_image_headers64]
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140057496
cmp dword [rdi + 0x10], 0
jl 0x140057484
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140057484
call fcn.140002fa0
mov rsi, rax
mov ecx, ebp
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x140057476
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0xe8], rax
jmp 0x140057496
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0xe8]
call fcn.1400032e0
nop
mov rdx, qword [rsp + 0xf0]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400574b9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r12, qword [rsp + 0xe8]
add r12, 0xffffffffffffffe8
mov rcx, qword [r12]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [r12 + 0x10], 0
jl 0x1400574ec
cmp rax, qword [r12]
jne 0x1400574ec
mov rbx, r12
lock add dword [r12 + 0x10], 1
jmp 0x140057532
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [r12 + 8]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x14005750a
call fcn.1400b7790
int3
mov eax, dword [r12 + 8]
mov dword [rbx + 8], eax
mov eax, dword [r12 + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [r12 + 0x18]
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.1401448d0
add rbx, 0x18
mov qword [rsp + 0xf8], rbx
xor eax, eax
mov rdi, r14
mov rsi, rbx
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x140057555
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
jne 0x14005757b
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400575a5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x1400575a5
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x1400575c9
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400575a5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lock xadd dword [r12 + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x14005765e
mov rcx, qword [r12]
mov rax, qword [rcx]
mov rdx, r12
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14005765e
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400575e4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [r13 + 0x98]
cmp qword [rax + 0x520], 0
je 0x140057643
xor edx, edx
lea r8d, [rdx + 0x6c]
lea rcx, [rsp + 0x34]
call fcn.1401489d0
mov dword [rsp + 0x30], 0x70
mov qword [rsp + 0x38], 0
lea rax, str.open
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0xe8]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x60], 1
lea rcx, [rsp + 0x30]
call qword [sym.imp.SHELL32.dll_ShellExecuteExW]
nop
lock xadd dword [r12 + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x14005765e
mov rcx, qword [r12]
mov rax, qword [rcx]
mov rdx, r12
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rsp, 0xa0
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret