Function at 0x10012c08c
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 r13
push r15
sub rsp, 0x40
xor edi, edi
mov ebx, r8d
mov r13, rdx
and qword [rax + 8], rdi
and dword [rcx], edi
mov rbp, rcx
mov qword [rax + 0x10], rdi
lea r15, [0x1004a9500]
test rdx, rdx
je 0x10012c104
lea rdx, [rax + 0x10]
mov rcx, r13
call fcn.10005c2cc
mov rdi, qword [rsp + 0x78]
mov esi, eax
test eax, eax
js 0x10012c3ef
lea r8, [0x10004a2a4]
lea rcx, [rsp + 0x70]
mov rdx, rdi
call fcn.10012fa70
mov esi, eax
test eax, eax
js 0x10012c3ef
mov r12, qword [rsp + 0x70]
jmp 0x10012c10c
mov r13, qword [rcx + 0x10]
mov r12, qword [rcx + 0x18]
test ebx, ebx
je 0x10012c126
mov rdx, r13
mov rcx, rbp
call fcn.100128f18
mov rdx, r12
mov rcx, rbp
call fcn.100128f18
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x10012c160
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x10012c186
test eax, eax
jne 0x10012c14d
mov esi, 0x80004005
jmp 0x10012c3ef
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
jmp 0x10012c3eb
mov rdx, r13
mov rcx, rbp
call fcn.100128f18
xor r8d, r8d
mov rdx, r13
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x10012c186
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x10012c13f
mov r9, r13
mov edx, 0x80000000
mov r8d, 3
mov rcx, rbp
call fcn.10012dbec
mov esi, eax
test eax, eax
jns 0x10012c1cc
mov rcx, qword [0x1004a9500]
cmp rcx, r15
je 0x10012c1d3
test byte [rcx + 0x3c], 2
je 0x10012c1d3
mov rcx, qword [rcx + 0x30]
lea r8, [0x10003a148]
mov edx, 0x1b
mov r9d, eax
call fcn.10005c358
mov rcx, qword [0x1004a9500]
cmp esi, 0x80070002
jne 0x10012c380
mov r15d, 4
test ebx, ebx
jne 0x10012c227
lea rax, [0x1004a9500]
cmp rcx, rax
je 0x10012c216
mov eax, dword [rcx + 0x3c]
mov edx, 0x8000004
and eax, edx
cmp eax, edx
jne 0x10012c216
mov rcx, qword [rcx + 0x30]
lea edx, [rbx + 0xd]
lea r8, [0x10003a148]
call fcn.100126004
mov edx, r15d
mov r8d, 0x4000200e
mov rcx, rbp
call fcn.10012d254
xor esi, esi
xor r9d, r9d
mov edx, 0xc0000000
and qword [rsp + 0x30], rsi
lea r8d, [rsi + 1]
mov rcx, r12
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 1
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rbx, rax
test rax, rax
je 0x10012c280
cmp rax, 0xffffffffffffffff
je 0x10012c280
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10012c2da
bts eax, 0xd
mov rcx, r12
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
jmp 0x10012c2a3
or rbx, 0xffffffffffffffff
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x10012c295
mov esi, 0x80004005
jmp 0x10012c2a7
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
test esi, esi
jns 0x10012c2da
mov rcx, qword [0x1004a9500]
lea r12, [0x1004a9500]
cmp rcx, r12
je 0x10012c2e8
test byte [rcx + 0x3c], 2
je 0x10012c2e8
mov rcx, qword [rcx + 0x30]
lea r8, [0x10003a148]
mov edx, 0x1a
mov r9d, esi
call fcn.10005c358
jmp 0x10012c2e1
lea r12, [0x1004a9500]
mov rcx, qword [0x1004a9500]
test rbx, rbx
je 0x10012c303
cmp rbx, 0xffffffffffffffff
je 0x10012c303
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [0x1004a9500]
test esi, esi
js 0x10012c3f6
mov r9, r13
mov r8d, r15d
mov edx, 0xc0000000
mov rcx, rbp
call fcn.10012dbec
mov esi, eax
test eax, eax
jns 0x10012c34e
mov rcx, qword [0x1004a9500]
cmp rcx, r12
je 0x10012c355
test byte [rcx + 0x3c], 2
je 0x10012c355
mov rcx, qword [rcx + 0x30]
lea r8, [0x10003a148]
mov edx, 0x1c
mov r9d, eax
call fcn.10005c358
mov rcx, qword [0x1004a9500]
test esi, esi
js 0x10012c3f6
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10012c37a
bts eax, 0xd
mov rcx, r13
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
and dword [rbp + 0x20], 0
jmp 0x10012c38b
test esi, esi
js 0x10012c3f6
mov dword [rbp + 0x20], 1
test rdi, rdi
je 0x10012c3eb
mov rbx, qword [rbp + 0x10]
mov r12, rdi
xor edi, edi
test rbx, rbx
je 0x10012c3b7
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
lea r8, [rbx - 4]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
and qword [rbp + 0x10], rdi
mov qword [rbp + 0x10], r12
mov rbx, qword [rbp + 0x18]
mov r12, qword [rsp + 0x70]
and qword [rsp + 0x70], rdi
test rbx, rbx
je 0x10012c3e7
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
lea r8, [rbx - 4]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
and qword [rbp + 0x18], rdi
mov qword [rbp + 0x18], r12
test esi, esi
jns 0x10012c420
mov rcx, qword [0x1004a9500]
lea rax, [0x1004a9500]
cmp rcx, rax
je 0x10012c420
test byte [rcx + 0x3c], 2
je 0x10012c420
mov rcx, qword [rcx + 0x30]
lea r8, [0x10003a148]
mov edx, 0xe
mov r9d, esi
call fcn.10005c358
mov rax, qword [rsp + 0x70]
test rax, rax
je 0x10012c448
lea rbx, [rax - 4]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rbx
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
and qword [rsp + 0x70], 0
test rdi, rdi
je 0x10012c462
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
lea r8, [rdi - 4]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
lea r11, [rsp + 0x40]
mov eax, esi
mov rbx, qword [r11 + 0x40]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r13
pop r12
pop rdi
pop rsi
ret