Function at 0x1401c4148
Capabilities:
Check if file exists
Get file attributes
Move file
Set file attributes

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x40
xor ebx, ebx
mov r12, r9
and qword [rbp + 0x40], rbx
mov r13d, r8d
and dword [rcx], ebx
mov rdi, rdx
mov qword [rbp + 0x48], rbx
mov r14, rcx
test rdx, rdx
je 0x1401c41ec
lea rdx, [rbp + 0x48]
mov rcx, rdi
call fcn.140082960
mov esi, eax
test eax, eax
jns 0x1401c419e
mov ecx, eax
call fcn.140082a8c
mov rbx, qword [rbp + 0x48]
jmp 0x1401c444f
mov rbx, qword [rbp + 0x48]
lea r8, str..bak
mov rdx, rbx
lea rcx, [rbp + 0x40]
call fcn.1401c65a8
mov esi, eax
test eax, eax
jns 0x1401c41c7
mov ecx, eax
call fcn.140082a8c
jmp 0x1401c444f
mov r15, qword [rbp + 0x40]
test r12, r12
je 0x1401c41df
mov rax, qword [r12]
mov qword [r14 + 0x28], rax
mov rax, qword [r12 + 8]
jmp 0x1401c41e6
and qword [r14 + 0x28], 0
xor eax, eax
mov qword [r14 + 0x30], rax
jmp 0x1401c41f4
mov rdi, qword [rcx + 0x10]
mov r15, qword [rcx + 0x18]
test r13d, r13d
je 0x1401c4209
mov rdx, rdi
call fcn.1401bdf1c
mov rdx, r15
call fcn.1401bdf1c
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
or r12d, 0xffffffff
cmp eax, r12d
jne 0x1401c424e
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x1401c4294
test eax, eax
jne 0x1401c4231
mov esi, 0x80004005
jmp 0x1401c4247
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
test esi, esi
jns 0x1401c4474
mov ecx, esi
jmp 0x1401c41bd
mov rdx, rdi
call fcn.1401bdf1c
xor r8d, r8d
mov rdx, rdi
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x1401c4294
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1401c427a
mov esi, 0x80004005
jmp 0x1401c4288
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov ecx, esi
call fcn.140082a8c
jmp 0x1401c444b
mov r9, rdi
mov edx, 0x80000000
mov r8d, 3
mov rcx, r14
call fcn.1401c5148
mov esi, eax
test eax, eax
jns 0x1401c42b7
mov ecx, eax
call fcn.140082a8c
mov ecx, esi
call fcn.140082b34
cmp esi, 0x80070002
jne 0x1401c43c0
xor esi, esi
xor r9d, r9d
and qword [rsp + 0x30], rsi
mov edx, 0xc0000000
mov dword [rsp + 0x28], 0x80
mov rcx, r15
mov dword [rsp + 0x20], 1
lea r8d, [rsi + 1]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r13d, 0x2000
lea rcx, [rax + 1]
test rcx, 0xfffffffffffffffe
jne 0x1401c4336
or qword [rbp + 0x48], 0xffffffffffffffff
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1401c431f
mov esi, 0x80004005
jmp 0x1401c432d
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov ecx, esi
call fcn.140082a8c
jmp 0x1401c4356
mov rcx, r15
mov qword [rbp + 0x48], rax
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, r12d
je 0x1401c4356
or eax, r13d
mov rcx, r15
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ecx, esi
call fcn.140082b34
lea rcx, [rbp + 0x48]
call fcn.14007f49c
test esi, esi
js 0x1401c4247
mov r9, rdi
mov edx, 0xc0000000
mov r8d, 4
mov rcx, r14
call fcn.1401c5148
mov esi, eax
test eax, eax
jns 0x1401c4391
mov ecx, eax
call fcn.140082a8c
mov ecx, esi
call fcn.140082b34
test esi, esi
js 0x1401c4247
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, r12d
je 0x1401c43bc
or eax, r13d
mov rcx, rdi
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
xor eax, eax
jmp 0x1401c43cd
test esi, esi
js 0x1401c4247
mov eax, 1
mov dword [r14 + 0x20], eax
test rbx, rbx
je 0x1401c4474
mov rdi, qword [r14 + 0x10]
mov r15, rbx
xor ebx, ebx
test rdi, rdi
je 0x1401c4404
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
lea r8, [rdi - 4]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor ecx, ecx
call fcn.140082b34
xor eax, eax
test r15, r15
cmovne rax, r15
mov r15, qword [rbp + 0x40]
and qword [rbp + 0x40], rbx
mov qword [r14 + 0x10], rax
mov rdi, qword [r14 + 0x18]
test rdi, rdi
je 0x1401c443e
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
lea r8, [rdi - 4]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor ecx, ecx
call fcn.140082b34
xor eax, eax
test r15, r15
cmovne rax, r15
mov qword [r14 + 0x18], rax
test esi, esi
jns 0x1401c4474
cmp dword [0x1404524ec], 0
jne 0x1401c4474
xor r9d, r9d
mov r8d, esi
mov rcx, r14
lea edx, [r9 + 3]
call fcn.1401bdf98
mov dword [0x1404524ec], 1
mov ecx, esi
call fcn.140082b34
mov rax, qword [rbp + 0x40]
test rax, rax
je 0x1401c44a8
lea rdi, [rax - 4]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor ecx, ecx
call fcn.140082b34
and qword [rbp + 0x40], 0
test rbx, rbx
je 0x1401c44c9
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
lea r8, [rbx - 4]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor ecx, ecx
call fcn.140082b34
mov rbx, qword [rsp + 0x90]
mov eax, esi
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret