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

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x40
xor ebx, ebx
mov rdi, r9
and qword [rax + 8], rbx
mov r12d, r8d
and dword [rcx], ebx
mov rbp, rdx
mov qword [rax + 0x10], rbx
mov r14, rcx
test rdx, rdx
je 0x1401c2d8a
lea rdx, [rax + 0x10]
mov rcx, rbp
call fcn.14007ab14
mov esi, eax
test eax, eax
jns 0x1401c2d3b
mov ecx, eax
call fcn.14007ac40
mov rbx, qword [rsp + 0x78]
jmp 0x1401c2ff1
mov rbx, qword [rsp + 0x78]
lea r8, str..bak
mov rdx, rbx
lea rcx, [rsp + 0x70]
call fcn.1401c514c
mov esi, eax
test eax, eax
jns 0x1401c2d66
mov ecx, eax
call fcn.14007ac40
jmp 0x1401c2ff1
mov r15, qword [rsp + 0x70]
test rdi, rdi
je 0x1401c2d7d
mov rax, qword [rdi]
mov qword [r14 + 0x28], rax
mov rax, qword [rdi + 8]
jmp 0x1401c2d84
and qword [r14 + 0x28], 0
xor eax, eax
mov qword [r14 + 0x30], rax
jmp 0x1401c2d92
mov rbp, qword [rcx + 0x10]
mov r15, qword [rcx + 0x18]
test r12d, r12d
je 0x1401c2da7
mov rdx, rbp
call fcn.1401bcba8
mov rdx, r15
call fcn.1401bcba8
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
or r12d, 0xffffffff
cmp eax, r12d
jne 0x1401c2dec
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x1401c2e32
test eax, eax
jne 0x1401c2dcf
mov esi, 0x80004005
jmp 0x1401c2de5
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
test esi, esi
jns 0x1401c3016
mov ecx, esi
jmp 0x1401c2d5c
mov rdx, rbp
call fcn.1401bcba8
xor r8d, r8d
mov rdx, rbp
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x1401c2e32
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1401c2e18
mov esi, 0x80004005
jmp 0x1401c2e26
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov ecx, esi
call fcn.14007ac40
jmp 0x1401c2fed
mov r9, rbp
mov edx, 0x80000000
mov r8d, 3
mov rcx, r14
call fcn.1401c3cd0
mov esi, eax
test eax, eax
jns 0x1401c2e55
mov ecx, eax
call fcn.14007ac40
mov ecx, esi
call fcn.14007ace8
cmp esi, 0x80070002
jne 0x1401c2f60
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 rdi, rax
inc rax
test rax, 0xfffffffffffffffe
jne 0x1401c2ece
or rdi, 0xffffffffffffffff
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1401c2eb7
mov esi, 0x80004005
jmp 0x1401c2ec5
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov ecx, esi
call fcn.14007ac40
jmp 0x1401c2eeb
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, r12d
je 0x1401c2eeb
bts eax, 0xd
mov rcx, r15
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ecx, esi
call fcn.14007ace8
lea rax, [rdi - 1]
cmp rax, 0xfffffffffffffffd
ja 0x1401c2f05
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
js 0x1401c2de5
mov r9, rbp
mov edx, 0xc0000000
mov r8d, 4
mov rcx, r14
call fcn.1401c3cd0
mov esi, eax
test eax, eax
jns 0x1401c2f30
mov ecx, eax
call fcn.14007ac40
mov ecx, esi
call fcn.14007ace8
test esi, esi
js 0x1401c2de5
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, r12d
je 0x1401c2f5c
bts eax, 0xd
mov rcx, rbp
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
xor eax, eax
jmp 0x1401c2f6d
test esi, esi
js 0x1401c2de5
mov eax, 1
mov dword [r14 + 0x20], eax
test rbx, rbx
je 0x1401c3016
mov rdi, qword [r14 + 0x10]
mov rbp, rbx
xor ebx, ebx
test rdi, rdi
je 0x1401c2fa4
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.14007ace8
xor eax, eax
test rbp, rbp
cmovne rax, rbp
mov rbp, qword [rsp + 0x70]
and qword [rsp + 0x70], rbx
mov qword [r14 + 0x10], rax
mov rdi, qword [r14 + 0x18]
test rdi, rdi
je 0x1401c2fe0
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.14007ace8
xor eax, eax
test rbp, rbp
cmovne rax, rbp
mov qword [r14 + 0x18], rax
test esi, esi
jns 0x1401c3016
cmp dword [0x14045d71c], 0
jne 0x1401c3016
xor r9d, r9d
mov r8d, esi
mov rcx, r14
lea edx, [r9 + 3]
call fcn.1401bcc24
mov dword [0x14045d71c], 1
mov ecx, esi
call fcn.14007ace8
mov rax, qword [rsp + 0x70]
test rax, rax
je 0x1401c304c
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.14007ace8
and qword [rsp + 0x70], 0
test rbx, rbx
je 0x1401c306d
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.14007ace8
lea r11, [rsp + 0x40]
mov eax, esi
mov rbx, qword [r11 + 0x40]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret