Function at 0x14001c240
Capabilities:
Check if file exists
Copy file
Create directory
Get file attributes
Move file
Read file on windows
Write file on windows

Disassembly:
mov r11, rsp
mov qword [r11 + 8], rcx
push rbp
push rsi
push r13
lea rbp, [r11 - 0x5f]
sub rsp, 0x90
lea rsi, [rcx - 0x120]
mov r13, rcx
mov eax, dword [rsi + 0x70]
dec eax
cmp eax, 0x20
ja case.default.0x14001c295
mov qword [r11 - 0x20], rbx
lea rcx, [0x140000000]
mov qword [r11 - 0x28], rdi
mov qword [r11 - 0x30], r12
mov qword [r11 - 0x38], r14
cdqe
mov qword [r11 - 0x40], r15
mov edx, dword [rcx + rax*4 + 0x1cc20]
add rdx, rcx
jmp rdx
mov rcx, rsi
call fcn.14001a540
jmp 0x14001c80f
mov ecx, dword [rsi + 0x150]
cmp ecx, 0xffffffff
je 0x14001c2c8
xor edi, edi
cmp ecx, 2
jle 0x14001c2bd
call fcn.1401eb31c
jmp 0x14001c2bf
mov eax, edi
cmp eax, 0xffffffff
jne 0x14001c808
mov rdi, 0xfffffffffffff00d
mov dword [rsi + 0x14c], 6
jmp 0x14001c808
mov ecx, dword [rsi + 0x150]
mov r14, qword [rsi + 0x180]
cmp ecx, 0xffffffff
jne 0x14001c306
mov dword [rsi + 0x14c], 6
mov rdi, 0xfffffffffffff00d
jmp 0x14001c808
xor edi, edi
mov dword [rbp + 0x67], edi
call fcn.1401ea1d8
mov r12, rax
cmp rax, 0xffffffffffffffff
jne 0x14001c335
mov ecx, 6
mov dword [rsi + 0x14c], 6
call fcn.1400232d0
movsxd rdi, eax
jmp 0x14001c808
cmp r14, 0xffffffffffffffff
je 0x14001c372
xor eax, eax
lea r8, [rbp + 0x77]
mov rdx, rdi
mov qword [rbp - 9], rax
mov rcx, r12
mov qword [rbp - 1], rax
mov qword [rbp + 7], rax
lea r13, [rbp - 9]
lea r9d, [rax + 1]
mov qword [rbp + 0xf], rax
call qword [sym.imp.KERNEL32.DLL_SetFilePointerEx]
test eax, eax
je 0x14001c375
mov dword [rbp + 0x67], 1
jmp 0x14001c375
mov r13, rdi
mov ebx, edi
cmp r14, 0xffffffffffffffff
je 0x14001c38c
mov eax, ebx
add rax, r14
mov dword [rbp + 7], eax
shr rax, 0x20
mov dword [rbp + 0xb], eax
mov rdx, qword [rsi + 0x178]
lea r9, [rbp + 0x6f]
mov eax, edi
mov rcx, r12
add rax, rax
mov qword [rsp + 0x20], r13
mov r8d, dword [rdx + rax*8]
mov rdx, qword [rdx + rax*8 + 8]
call qword [sym.imp.KERNEL32.DLL_ReadFile]
add ebx, dword [rbp + 0x6f]
inc edi
mov r15d, eax
test eax, eax
je 0x14001c3c7
cmp edi, dword [rsi + 0x170]
jb 0x14001c377
cmp dword [rbp + 0x67], 0
je 0x14001c3e0
mov rdx, qword [rbp + 0x77]
xor r9d, r9d
xor r8d, r8d
mov rcx, r12
call qword [sym.imp.KERNEL32.DLL_SetFilePointerEx]
test r15d, r15d
jne 0x14001c3f8
test ebx, ebx
jne 0x14001c3f8
call qword [sym.imp.KERNEL32.DLL_GetLastError]
cmp eax, 0x26
jne 0x14001c59f
mov edi, ebx
jmp 0x14001c808
mov ecx, dword [rsi + 0x150]
mov r14, qword [rsi + 0x180]
cmp ecx, 0xffffffff
jne 0x14001c42e
mov rdi, 0xfffffffffffff00d
mov dword [rsi + 0x14c], 6
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
xor edi, edi
mov dword [rbp + 0x6f], edi
call fcn.1401ea1d8
mov r12, rax
cmp rax, 0xffffffffffffffff
jne 0x14001c462
lea ecx, [rdi + 6]
mov dword [rsi + 0x14c], 6
call fcn.1400232d0
movsxd rdi, eax
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
cmp r14, 0xffffffffffffffff
je 0x14001c4a5
xor eax, eax
lea r8, [rbp + 0x7f]
mov qword [rbp - 9], rax
mov r9d, 1
mov qword [rbp - 1], rax
mov rdx, rdi
mov qword [rbp + 7], rax
mov rcx, r12
mov qword [rbp + 0xf], rax
lea rax, [rbp - 9]
mov qword [rbp + 0x77], rax
call qword [sym.imp.KERNEL32.DLL_SetFilePointerEx]
test eax, eax
je 0x14001c4a9
mov dword [rbp + 0x6f], 1
jmp 0x14001c4a9
mov qword [rbp + 0x77], rdi
mov r13, qword [rbp + 0x77]
mov ebx, edi
nop
cmp r14, 0xffffffffffffffff
je 0x14001c4c5
mov eax, ebx
add rax, r14
mov dword [rbp + 7], eax
shr rax, 0x20
mov dword [rbp + 0xb], eax
mov rdx, qword [rsi + 0x178]
lea r9, [rbp + 0x77]
mov eax, edi
mov rcx, r12
add rax, rax
mov qword [rsp + 0x20], r13
mov r8d, dword [rdx + rax*8]
mov rdx, qword [rdx + rax*8 + 8]
call qword [sym.imp.KERNEL32.DLL_WriteFile]
add ebx, dword [rbp + 0x77]
inc edi
mov r15d, eax
test eax, eax
je 0x14001c500
cmp edi, dword [rsi + 0x170]
jb 0x14001c4b0
cmp dword [rbp + 0x6f], 0
mov r13, qword [rbp + 0x67]
je 0x14001c51d
mov rdx, qword [rbp + 0x7f]
xor r9d, r9d
xor r8d, r8d
mov rcx, r12
call qword [sym.imp.KERNEL32.DLL_SetFilePointerEx]
test r15d, r15d
jne 0x14001c548
test ebx, ebx
jne 0x14001c548
call qword [sym.imp.KERNEL32.DLL_GetLastError]
mov ecx, eax
mov dword [rsi + 0x14c], eax
call fcn.1400232d0
movsxd rdi, eax
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
mov edi, ebx
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
mov r8d, dword [rsi + 0x168]
test r8b, 4
je 0x14001c579
mov dword [rsi + 0x14c], gethostname
mov rdi, 0xfffffffffffff02a
jmp 0x14001c808
mov rdx, qword [rsi + 0x160]
and r8d, 1
mov rcx, qword [rsi + 0x150]
call qword [sym.imp.KERNEL32.DLL_CopyFileW]
test eax, eax
jne case.0x14001c295.26
call qword [sym.imp.KERNEL32.DLL_GetLastError]
mov ecx, eax
mov dword [rsi + 0x14c], eax
call fcn.1400232d0
movsxd rdi, eax
jmp 0x14001c808
mov ebx, dword [rsi + 0x188]
mov r14d, 0x10000
mov eax, dword [rsi + 0x16c]
cmp rbx, r14
mov r12d, dword [rsi + 0x150]
mov r13, qword [rsi + 0x180]
cmovb r14d, ebx
xor edi, edi
mov dword [rbp + 0x67], eax
test r14, r14
je 0x14001cc0c
mov ecx, r14d
call qword [fcn.1401da214]
mov r15, rax
test rax, rax
je 0x14001cc0c
cmp r13, 0xffffffffffffffff
je 0x14001c618
xor r8d, r8d
mov rdx, r13
mov ecx, r12d
call fcn.1401ea6fc
cmp rax, 0xffffffffffffffff
je 0x14001c670
test rbx, rbx
je 0x14001c677
mov r13d, dword [rbp + 0x67]
nop dword [rax]
nop word [rax + rax]
mov r8d, r14d
cmp rbx, r14
mov rdx, r15
mov ecx, r12d
cmovb r8d, ebx
call fcn.1401ead34
test eax, eax
je 0x14001c677
cmp eax, 0xffffffff
je 0x14001c670
movsxd rcx, eax
mov r8d, eax
sub rbx, rcx
mov rdx, r15
mov ecx, r13d
call fcn.1401ebcec
cmp eax, 0xffffffff
je 0x14001c670
add edi, eax
test rbx, rbx
jne 0x14001c630
jmp 0x14001c677
mov rdi, 0xffffffffffffffff
call fcn.1401e1e4c
mov rcx, r15
mov ebx, dword [rax]
call qword [fcn.1401db01c]
call fcn.1401e1e4c
mov dword [rax], ebx
movsxd rax, edi
mov qword [rsi + 0x88], rax
cmp rax, 0xffffffffffffffff
jmp 0x14001ca74
mov rcx, qword [rsi + 0x150]
mov rax, 0xffffffffffffffff
nop
inc rax
cmp word [rcx + rax*2], 0
jne 0x14001c6b0
xor edi, edi
mov r10, rcx
cmp rax, 1
jbe 0x14001c6ea
cmp word [rcx + rax*2 - 4], 0x3a
je 0x14001c6ea
movzx edx, word [rcx + rax*2 - 2]
cmp dx, 0x5c
je 0x14001c6de
cmp dx, 0x2f
jne 0x14001c6ea
mov word [rcx + rax*2 - 2], di
mov r10, qword [rsi + 0x150]
xor r9d, r9d
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], 0x2000000
mov edx, 0x80
mov rcx, r10
mov dword [rsp + 0x20], 3
lea r8d, [r9 + 7]
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x14001cb80
lea r14, [rsi + 0xa0]
xor r8d, r8d
mov rdx, r14
mov rcx, rax
call fcn.14001b540
test eax, eax
je 0x14001c76b
call qword [sym.imp.KERNEL32.DLL_GetLastError]
call qword [sym.imp.KERNEL32.DLL_GetLastError]
mov ecx, eax
mov dword [rsi + 0x14c], eax
call fcn.1400232d0
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
jmp 0x14001c80f
mov qword [rsi + 0x90], r14
jmp 0x14001cbea
mov rcx, qword [rsi + 0x150]
mov rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], 0
jne 0x14001c785
cmp rax, 1
jbe 0x14001c7b5
cmp word [rcx + rax*2 - 4], 0x3a
je 0x14001c7b5
movzx edx, word [rcx + rax*2 - 2]
cmp dx, 0x5c
je 0x14001c7ae
cmp dx, 0x2f
jne 0x14001c7b5
xor edi, edi
mov word [rcx + rax*2 - 2], di
mov edx, 1
mov rcx, rsi
call fcn.14001b7c0
jmp 0x14001c80f
mov ecx, dword [rsi + 0x150]
cmp ecx, 0xffffffff
je 0x14001c2f0
call fcn.1401ea1d8
cmp rax, 0xffffffffffffffff
je 0x14001c319
lea rbx, [rsi + 0xa0]
xor r8d, r8d
mov rdx, rbx
mov rcx, rax
call fcn.14001b540
test eax, eax
jne 0x14001c599
mov qword [rsi + 0x90], rbx
xor edi, edi
mov qword [rsi + 0x88], rdi
mov r14, qword [rsp + 0x70]
mov r12, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x88]
mov r15, qword [rsp + 0x68]
add rsp, 0x90
pop r13
pop rsi
pop rbp
ret
mov ecx, dword [rsi + 0x150]
cmp ecx, 0xffffffff
je 0x14001c2f0
call fcn.1401ea1d8
mov rcx, qword [rsi + 0x180]
lea r8, [rbp + 0x67]
mov qword [rbp + 0x67], rcx
lea rdx, [rbp - 9]
mov rcx, rax
mov dword [rsp + 0x20], socket
mov r9d, 8
call qword [0x1402f15d0]
test eax, eax
jns case.0x14001c295.26
mov ecx, eax
call qword [0x1402f15f0]
jmp 0x14001c59f
mov rcx, qword [rsi + 0x150]
xor edi, edi
mov qword [rsp + 0x30], rdi
xor r9d, r9d
mov dword [rsp + 0x28], 0x2000000
mov edx, 0x100
mov dword [rsp + 0x20], 3
lea r8d, [rdi + 7]
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x14001cb80
movsd xmm2, qword [rsi + 0x160]
mov rcx, rax
movsd xmm1, qword [rsi + 0x158]
call fcn.14001bb60
test eax, eax
jne 0x14001cbb8
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
jmp 0x14001c808
mov ecx, dword [rsi + 0x150]
cmp ecx, 0xffffffff
je 0x14001c2f0
call fcn.1401ea1d8
cmp rax, 0xffffffffffffffff
je 0x14001c319
movsd xmm2, qword [rsi + 0x160]
mov rcx, rax
movsd xmm1, qword [rsi + 0x158]
call fcn.14001bb60
test eax, eax
je case.0x14001c295.26
jmp 0x14001c599
mov rcx, qword [rsi + 0x150]
call qword [sym.imp.KERNEL32.DLL_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x14001c96b
call qword [sym.imp.KERNEL32.DLL_GetLastError]
mov ecx, eax
mov dword [rsi + 0x14c], eax
call fcn.1400232d0
movsxd rdi, eax
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
test byte [rsi + 0x158], 2
je 0x14001c99d
and al, 0x11
cmp al, 1
jne 0x14001c99d
mov ecx, 0xfffff030
mov dword [rsi + 0x14c], 0xfffff030
call fcn.1400232d0
movsxd rdi, eax
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
xor edi, edi
mov qword [r13 - 0x98], rdi
jmp 0x14001c80f
mov edx, dword [rsi + 0x158]
mov rcx, qword [rsi + 0x150]
call fcn.1401ec510
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
cmp rcx, 0xffffffffffffffff
jne 0x14001c80f
call fcn.1401e1e2c
mov ecx, dword [rax]
mov dword [rsi + 0x14c], ecx
call fcn.1400232d0
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001b960
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001b8e0
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001a820
jmp 0x14001c80f
mov rcx, qword [rsi + 0x150]
call fcn.1401ea738
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
cmp rcx, 0xffffffffffffffff
jne 0x14001c80f
call fcn.1401e1e2c
mov ecx, dword [rax]
mov dword [rsi + 0x14c], ecx
call fcn.1400232d0
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
jmp 0x14001c80f
mov rcx, qword [rsi + 0x150]
call fcn.1401ea70c
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
cmp rcx, 0xffffffffffffffff
jne 0x14001c80f
call fcn.1401e1e2c
mov ecx, dword [rax]
mov dword [rsi + 0x14c], ecx
call fcn.1400232d0
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001a9e0
jmp 0x14001c80f
mov rdx, qword [rsi + 0x160]
mov r8d, 1
mov rcx, qword [rsi + 0x150]
call qword [sym.imp.KERNEL32.DLL_MoveFileExW]
jmp 0x14001c591
mov rcx, rsi
call fcn.14001ad70
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001b350
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001b1a0
jmp 0x14001c80f
mov rcx, qword [rsi + 0x90]
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.KERNEL32.DLL_FindClose]
mov rbx, qword [rsi + 0x90]
call fcn.1401e1e4c
mov rcx, rbx
mov edi, dword [rax]
call qword [fcn.1401db01c]
call fcn.1401e1e4c
mov dword [rax], edi
jmp case.0x14001c295.26
mov rdx, qword [rsi + 0x150]
xor r8d, r8d
mov rcx, qword [rsi + 0x160]
call qword [sym.imp.KERNEL32.DLL_CreateHardLinkW]
jmp 0x14001c591
mov rcx, rsi
call fcn.14001bf80
jmp 0x14001c80f
mov rcx, qword [rsi + 0x150]
xor edi, edi
mov qword [rsp + 0x30], rdi
xor r9d, r9d
mov dword [rsp + 0x28], 0x2200000
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.DLL_CreateFileW]
mov rbx, rax
cmp rax, 0xffffffffffffffff
jne 0x14001cba2
call qword [sym.imp.KERNEL32.DLL_GetLastError]
mov ecx, eax
mov dword [rsi + 0x14c], eax
call fcn.1400232d0
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
jmp 0x14001c80f
lea rdx, [rsi + 0x90]
xor r8d, r8d
mov rcx, rbx
call fcn.14001a300
test eax, eax
je 0x14001cbe3
call qword [sym.imp.KERNEL32.DLL_GetLastError]
mov ecx, eax
mov dword [rsi + 0x14c], eax
call fcn.1400232d0
movsxd rcx, eax
mov qword [rsi + 0x88], rcx
mov rcx, rbx
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
jmp 0x14001c80f
or dword [rsi + 0x148], 8
mov rcx, rbx
mov qword [rsi + 0x88], rdi
call qword [sym.imp.KERNEL32.DLL_CloseHandle]
jmp 0x14001c80f
mov rcx, rsi
call fcn.14001c050
jmp 0x14001c80f
lea rdx, str.uv__malloc
mov ecx, ntohs
call fcn.140023220
int3