Function at 0x14001f830
Capabilities:
Copy file
Get file attributes
Set file attributes

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
sub rsp, 0x20
mov rbx, qword [rcx]
xor r12d, r12d
test byte [rcx + 8], 2
mov rsi, rcx
mov edi, 1
jne 0x14001f8e6
mov eax, dword [rcx + 0xc]
test eax, eax
jne 0x14001f8d0
cmp word [rbx], r12w
mov rax, rbx
je 0x14001f884
nop
nop
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
cmp word [rax], r12w
jne 0x14001f870
cmp rbx, rax
ja 0x14001f8af
movzx ecx, word [rax]
cmp cx, 0x2f
je 0x14001f8af
cmp cx, 0x5c
je 0x14001f8af
cmp cx, 0x3a
je 0x14001f8af
cmp rax, rbx
je 0x14001f8bb
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.USER32.dll_CharPrevW]
cmp rbx, rax
jbe 0x14001f884
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
mov rbx, rax
mov rdx, qword [rsi + 0x10]
mov rcx, rbx
call fcn.1400cdd20
test eax, eax
je 0x14001f8e6
mov edi, r12d
jmp 0x14001f8e6
cmp eax, edi
jne 0x14001f8e6
mov rdx, qword [rcx + 0x10]
mov rcx, rbx
call fcn.14001da40
test eax, eax
cmove edi, r12d
mov rbx, qword [rsi]
movsxd rbp, edi
cmp word [rbx], r12w
mov rax, rbx
je 0x14001f910
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
cmp word [rax], r12w
jne 0x14001f8f5
cmp rbx, rax
ja 0x14001f93b
nop
nop
movzx ecx, word [rax]
cmp cx, 0x2f
je 0x14001f93b
cmp cx, 0x5c
je 0x14001f93b
cmp cx, 0x3a
je 0x14001f93b
cmp rax, rbx
je 0x14001f947
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.USER32.dll_CharPrevW]
cmp rbx, rax
jbe 0x14001f910
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
mov rbx, rax
lea rdx, [rsi + 0x258]
mov eax, 0x104
sub rbx, rdx
nop
nop
nop
lea rcx, [rax + 0x7ffffefa]
test rcx, rcx
je 0x14001f984
movzx ecx, word [rbx + rdx]
test cx, cx
je 0x14001f984
mov word [rdx], cx
add rdx, 2
sub rax, 1
jne 0x14001f960
jmp 0x14001f989
test rax, rax
jne 0x14001f98d
sub rdx, 2
test edi, edi
mov word [rdx], r12w
jle 0x14001fc52
mov eax, dword [rsi + 8]
test al, 4
jne 0x14001fc25
btr eax, 0x1d
mov dword [rsi + 8], eax
mov rax, qword [rsi + 0x18]
test rax, rax
je 0x14001f9f6
mov ecx, 0x7fffffff
mov edx, r12d
nop
cmp word [rax], dx
je 0x14001f9d9
add rax, 2
sub rcx, 1
jne 0x14001f9c0
mov edx, 0x80070057
mov rax, r12
jmp 0x14001f9f0
test rcx, rcx
jne 0x14001f9e8
mov edx, 0x80070057
mov rax, r12
jmp 0x14001f9f0
mov eax, 0x7fffffff
sub rax, rcx
test edx, edx
jns 0x14001f9fe
jmp 0x14001f9fb
mov edx, 0x80070057
mov rax, r12
mov rbx, qword [rsi]
test edx, edx
mov rdi, r12
cmovns rdi, rax
cmp word [rbx], r12w
mov rax, rbx
je 0x14001fa27
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
cmp word [rax], r12w
jne 0x14001fa13
cmp rbx, rax
ja 0x14001fa52
movzx ecx, word [rax]
cmp cx, 0x2f
je 0x14001fa52
cmp cx, 0x5c
je 0x14001fa52
cmp cx, 0x3a
je 0x14001fa52
cmp rax, rbx
je 0x14001fa5e
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.USER32.dll_CharPrevW]
cmp rbx, rax
jbe 0x14001fa27
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
mov rbx, rax
test rbx, rbx
je 0x14001faa6
mov eax, 0x7fffffff
mov edx, r12d
nop
nop
cmp word [rbx], dx
je 0x14001fa89
add rbx, 2
sub rax, 1
jne 0x14001fa70
mov edx, 0x80070057
mov rcx, r12
jmp 0x14001faa0
test rax, rax
jne 0x14001fa98
mov edx, 0x80070057
mov rcx, r12
jmp 0x14001faa0
mov ecx, 0x7fffffff
sub rcx, rax
test edx, edx
jns 0x14001faae
jmp 0x14001faab
mov edx, 0x80070057
mov rcx, r12
test edx, edx
mov rax, r12
cmovns rax, rcx
mov ecx, 0x40
lea rbx, [rdi + rax + 0x104]
mov edx, ebx
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test rbx, rbx
mov r8, qword [rsi + 0x18]
mov rdi, rax
je 0x14001fb1f
cmp rbx, 0x7fffffff
ja 0x14001fb1f
mov edx, 0x7ffffffe
mov rcx, rax
sub rdx, rbx
sub r8, rax
nop
lea rax, [rdx + rbx]
test rax, rax
je 0x14001fb12
movzx eax, word [r8 + rcx]
test ax, ax
je 0x14001fb12
mov word [rcx], ax
add rcx, 2
sub rbx, 1
jne 0x14001faf0
jmp 0x14001fb17
test rbx, rbx
jne 0x14001fb1b
sub rcx, 2
mov word [rcx], r12w
mov rbx, qword [rsi]
mov rax, rbx
cmp word [rbx], r12w
je 0x14001fb44
nop
nop
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
cmp word [rax], r12w
jne 0x14001fb30
cmp rbx, rax
ja 0x14001fb6f
movzx ecx, word [rax]
cmp cx, 0x2f
je 0x14001fb6f
cmp cx, 0x5c
je 0x14001fb6f
cmp cx, 0x3a
je 0x14001fb6f
cmp rax, rbx
je 0x14001fb7b
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.USER32.dll_CharPrevW]
cmp rbx, rax
jbe 0x14001fb44
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
mov rbx, rax
mov rdx, rbx
mov rcx, rdi
call fcn.1400202c0
mov rcx, qword [rsi]
mov rdx, rdi
call fcn.1400cdd20
test eax, eax
je 0x14001fc0c
mov rcx, rdi
call fcn.14001de50
test eax, eax
mov ebx, eax
je 0x14001fc0c
mov rcx, qword [rsi + 0x18]
xor edx, edx
call fcn.14001d310
mov r11d, dword [rsi + 8]
test r11d, 0x600
je 0x14001fbdd
test ebx, ebx
jle 0x14001fbdd
bt r11d, 9
jae 0x14001fbcb
mov rbp, r12
jmp 0x14001fc13
bt r11d, 0xa
jae 0x14001fbdd
mov rcx, qword [rsi]
mov rdx, rdi
call fcn.14001e200
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov rcx, rdi
and eax, 0xfffffffc
bts eax, 7
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov rcx, qword [rsi]
xor r8d, r8d
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_CopyFileW]
movsxd rbp, eax
jmp 0x14001fc13
or dword [rsi + 8], 0x20000000
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
test rbp, rbp
jle 0x14001fc52
mov rcx, qword [rsi]
add dword [rsi + 0x20], 1
lea rdx, [rsp + 0x40]
mov dword [rsp + 0x40], r12d
call qword [sym.imp.KERNEL32.dll_GetCompressedFileSizeW]
mov edx, dword [rsp + 0x40]
shl rdx, 0x20
mov ecx, eax
add rdx, rcx
add qword [rsi + 0x28], rdx
mov rbx, qword [rsp + 0x48]
mov rax, rbp
mov rbp, qword [rsp + 0x50]
add rsp, 0x20
pop r12
pop rdi
pop rsi
ret