Function at 0x14000a8f0
Capabilities:
Check if file exists
Create directory
Get common file path
Get file size
Get startup folder

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1c0]
sub rsp, 0x2c0
mov rax, qword [0x1400590c0]
xor rax, rsp
mov qword [rbp + 0x1b0], rax
mov dword [rsp + 0x68], r9d
mov r13, r8
mov rax, rcx
mov qword [rbp - 0x70], rcx
mov qword [rbp - 0x68], rcx
xor ecx, ecx
mov dword [rsp + 0x50], ecx
mov qword [rax], rcx
mov qword [rax + 8], rcx
lea rbx, [rax + 0x10]
mov qword [rsp + 0x78], rbx
call fcn.1400033f0
mov rcx, rax
test rax, rax
je 0x14000b090
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbx], rax
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp - 0x60]
call fcn.14003fd50
xor r9d, r9d
mov r8d, 0x1a
lea rdx, [rbp - 0x60]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
call fcn.1400033f0
mov rcx, rax
test rax, rax
je 0x14000b09b
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x60], rax
lea rax, [rbp - 0x60]
mov r15, 0xffffffffffffffff
cmp rax, 0x10000
lea rax, [rbp - 0x60]
jae 0x14000a9d3
movzx edx, ax
lea rcx, [rsp + 0x60]
call fcn.140007210
jmp 0x14000a9fa
mov r8, r15
nop word [rax + rax]
inc r8
cmp word [rax + r8*2], 0
jne 0x14000a9e0
lea rdx, [rbp - 0x60]
lea rcx, [rsp + 0x60]
call fcn.1400048b0
nop
lea rdx, str.Aliworkbench_
lea rcx, [rsp + 0x60]
call fcn.140002880
nop
mov rsi, qword [rsp + 0x60]
lea rax, [rsi - 0x18]
mov qword [rbp - 0x78], rax
mov rcx, qword [rsi - 0x18]
test rcx, rcx
je 0x14000aa30
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x14000aa41
call fcn.1400033f0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x14000b0a6
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x58], rbx
mov dword [rsp + 0x50], 1
lea rcx, str.Update_
mov rdi, r15
nop dword [rax + rax]
inc rdi
cmp word [rcx + rdi*2], 0
jne 0x14000aa70
movsxd r12, dword [rsi - 0x10]
lea r14d, [r12 + rdi]
test r14d, r14d
js 0x14000b085
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or eax, ecx
jge 0x14000aaaf
mov edx, r14d
lea rcx, [rsp + 0x58]
call fcn.1400045e0
mov rbx, qword [rsp + 0x58]
add r12, r12
je 0x14000aad9
test rbx, rbx
jne 0x14000aacb
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000aad9
mov r8, r12
mov rdx, rsi
mov rcx, rbx
call fcn.14003f6b0
movsxd r8, edi
add r8, r8
lea rcx, [r12 + rbx]
je 0x14000ab08
test rcx, rcx
jne 0x14000aafc
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000ab08
lea rdx, str.Update_
call fcn.14003f6b0
cmp r14d, dword [rbx - 0xc]
jg 0x14000b085
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
xor ecx, ecx
mov word [rbx + rax*2], cx
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x14000ab36
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x14000ab47
call fcn.1400033f0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x14000b0b1
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x70], rdi
mov dword [rsp + 0x50], 3
mov rcx, qword [r13]
mov qword [rbp - 0x80], rcx
mov ecx, dword [rcx - 0x10]
mov dword [rsp + 0x6c], ecx
movsxd r13, dword [rbx - 0x10]
lea r14d, [rcx + r13]
test r14d, r14d
js 0x14000b07a
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or eax, ecx
jge 0x14000abab
mov edx, r14d
lea rcx, [rsp + 0x70]
call fcn.1400045e0
mov rdi, qword [rsp + 0x70]
add r13, r13
je 0x14000abd5
test rdi, rdi
jne 0x14000abc7
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000abd5
mov r8, r13
mov rdx, rbx
mov rcx, rdi
call fcn.14003f6b0
movsxd r8, dword [rsp + 0x6c]
add r8, r8
lea rcx, [rdi + r13]
je 0x14000ac0d
test rcx, rcx
je 0x14000abfd
mov rdx, qword [rbp - 0x80]
test rdx, rdx
je 0x14000abf8
call fcn.14003f6b0
jmp 0x14000ac0d
call fcn.14003fd50
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
cmp r14d, dword [rdi - 0xc]
jg 0x14000b07a
mov dword [rdi - 0x10], r14d
movsxd rax, r14d
xor r13d, r13d
mov word [rdi + rax*2], r13w
lea rdx, [rsp + 0x70]
mov r14, qword [rsp + 0x78]
mov rcx, r14
call fcn.140002590
nop
lea rdx, [rdi - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000ac53
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov dword [rsp + 0x50], r13d
mov eax, r15d
lock xadd dword [rbx - 8], eax
sub eax, 1
jg 0x14000ac73
mov rcx, qword [rbx - 0x18]
mov rax, qword [rcx]
lea rdx, [rbx - 0x18]
call qword [rax + 8]
mov rdi, r13
mov rbx, r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov rcx, qword [r14]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
cmp rax, 0xffffffffffffffff
jne 0x14000acaf
call fcn.14000c900
jmp 0x14000acb5
mov rbx, rax
mov eax, r13d
test eax, eax
js 0x14000acde
lea rdx, [rsp + 0x5c]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [rsp + 0x58], eax
cmp eax, 0xffffffff
jne 0x14000acd9
call fcn.14000c900
test eax, eax
js 0x14000acde
mov rdi, qword [rsp + 0x58]
test rbx, rbx
je 0x14000aced
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop
mov r13d, 2
mov r14d, 4
cmp edi, dword [rsp + 0x68]
cmovbe r13d, r14d
mov rcx, qword [rsi - 0x18]
test rcx, rcx
je 0x14000ad18
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x14000ad29
call fcn.1400033f0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x14000b0bc
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x58], rbx
mov dword [rsp + 0x50], r14d
mov rdi, r15
lea rcx, str.Update_
inc rdi
cmp word [rcx + rdi*2], 0
jne 0x14000ad50
movsxd r12, dword [rsi - 0x10]
lea r14d, [r12 + rdi]
test r14d, r14d
js 0x14000b0dd
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or eax, ecx
jge 0x14000ad8f
mov edx, r14d
lea rcx, [rsp + 0x58]
call fcn.1400045e0
mov rbx, qword [rsp + 0x58]
add r12, r12
je 0x14000adbb
test rbx, rbx
jne 0x14000adab
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000adbb
mov r8, r12
mov rdx, qword [rsp + 0x60]
mov rcx, rbx
call fcn.14003f6b0
movsxd r8, edi
add r8, r8
lea rcx, [r12 + rbx]
je 0x14000adea
test rcx, rcx
jne 0x14000adde
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000adea
lea rdx, str.Update_
call fcn.14003f6b0
cmp r14d, dword [rbx - 0xc]
jg 0x14000b0dd
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
xor r14d, r14d
mov word [rbx + rax*2], r14w
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov edi, eax
mov dword [rsp + 0x50], r14d
lea rdx, [rbx - 0x18]
mov ecx, r15d
lock xadd dword [rdx + 0x10], ecx
sub ecx, 1
jg 0x14000ae2e
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [r8 + 8]
test edi, edi
jne 0x14000af66
lea r12, [rsi - 0x18]
mov rcx, qword [r12]
test rcx, rcx
je 0x14000ae51
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x14000ae62
call fcn.1400033f0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x14000b0c7
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x58], rbx
mov dword [rsp + 0x50], 8
mov rdi, r15
lea rcx, str.Update_
nop dword [rax]
inc rdi
cmp word [rcx + rdi*2], 0
jne 0x14000ae90
movsxd r14, dword [rsi - 0x10]
lea esi, [r14 + rdi]
test esi, esi
js 0x14000b0d2
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, esi
or eax, ecx
jge 0x14000aecc
mov edx, esi
lea rcx, [rsp + 0x58]
call fcn.1400045e0
mov rbx, qword [rsp + 0x58]
add r14, r14
je 0x14000aef8
test rbx, rbx
jne 0x14000aee8
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000aef8
mov r8, r14
mov rdx, qword [rsp + 0x60]
mov rcx, rbx
call fcn.14003f6b0
movsxd r8, edi
add r8, r8
lea rcx, [r14 + rbx]
je 0x14000af27
test rcx, rcx
jne 0x14000af1b
call fcn.140023c08
mov dword [rax], 0x16
call fcn.140023ae4
jmp 0x14000af27
lea rdx, str.Update_
call fcn.14003f6b0
cmp esi, dword [rbx - 0xc]
jg 0x14000b0d2
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor r14d, r14d
mov word [rbx + rax*2], r14w
xor edx, edx
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
nop
lea rdx, [rbx - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000af6a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
jmp 0x14000af6a
mov r12, qword [rbp - 0x78]
mov rdi, qword [rsp + 0x78]
mov rdi, qword [rdi]
mov rsi, qword [rbp - 0x70]
mov rbx, qword [rsi + 8]
test rbx, rbx
je 0x14000aff8
cmp qword [rbx], 0
je 0x14000afed
lea rcx, str.kernel32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test rax, rax
jne 0x14000af9f
mov rax, r15
jmp 0x14000b021
lea rdx, str.CreateFileTransactedW
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x14000aff3
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r14
mov rdx, qword [rbx]
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], r13d
xor r9d, r9d
mov edx, 0xc0000000
mov r8d, 1
mov rcx, rdi
call rax
jmp 0x14000b021
cmp dword [rbx + 8], 0
jne 0x14000aff8
mov rax, r15
jmp 0x14000b021
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], r13d
xor r9d, r9d
mov r8d, 1
mov edx, 0xc0000000
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CreateFileW]
cmp rax, 0xffffffffffffffff
jne 0x14000b02e
call fcn.14000c900
jmp 0x14000b031
mov qword [rsi], rax
lock xadd dword [r12 + 0x10], r15d
sub r15d, 1
jg 0x14000b04d
mov rcx, qword [r12]
mov r8, qword [rcx]
mov rdx, r12
call qword [r8 + 8]
nop
mov rax, rsi
mov rcx, qword [rbp + 0x1b0]
xor rcx, rsp
call fcn.14001d590
mov rbx, qword [rsp + 0x308]
add rsp, 0x2c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov ecx, 0x80070057
call fcn.140002a90
nop
mov ecx, 0x80070057
call fcn.140002a90
nop
mov ecx, 0x80004005
call fcn.140002a90
nop
mov ecx, 0x80004005
call fcn.140002a90
nop
mov ecx, 0x80004005
call fcn.140002a90
nop
mov ecx, 0x80004005
call fcn.140002a90
nop
mov ecx, 0x80004005
call fcn.140002a90
nop
mov ecx, 0x80004005
call fcn.140002a90
nop
mov ecx, 0x80070057
call fcn.140002a90
nop
mov ecx, 0x80070057
call fcn.140002a90
int3